○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



▲トップページ > Visual BASIC と C#