○VB6 重い処理をマルチプロセスで処理
▽重い処理をActiveX.EXEにて実行します。
処理内容としては、フォーム上にタイマーを貼り付けて、グローバル変数のフラグを常に監視して
フラグが来たら、処理を開始します。
グローバル変数のフラグはActiveX Classにより書き込まれるという手順です。
重い処理が終了しても、それを伝える方法が無いため、ファイルとかActiveX.EXEとかレジストリとか何かを使って伝えてください。
■ActiveX.EXEの作成
新規プロジェクトにてActiveX EXEを選択してください。
プロジェクト エクスプローラを見るとClass1が一つだけあると思います
そこに、標準モジュールとフォームモジュールを追加してください。
▼Class1の内容
Private Sub Class_Initialize()
Form1.Show 'フォームを表示
End Sub
Public Sub Start()
StartFlag = True
End Sub
▼標準モジュールの内容
Global StartFlag As Boolean
▼フォームモジュール
フォームにタイマーコントロールを貼り付けてください。
タイマーのIntervalに適当な値をセットしてください。
このタイマーのイベントの中に重い処理を記述します。
Private Sub Timer1_Timer()
If StartFlag Then
Dim a As Variant
Dim b As Variant
For a = 0 To 10000
For b = 0 To 10000
'重い処理のつもり
Next b
Next a
MsgBox ("重い処理完了")
StartFlag = False
End If
End Sub
■上のActiveXを呼び出すプログラム
新規プロジェクトにて標準 EXEを選択してください。
参照設定にて上で作ったActiveX EXEを参照してください。
Dim obj As Project1.Class1
Private Sub Form_Load()
Set obj = New Project1.Class1
End Sub
Private Sub Command1_Click()
Call obj.Start '処理開始フラグを書き込む
End Sub