私は多くのサードパーティのライブラリとコントロールを備えたレガシーの大規模な vb6 エディターを持っていますが、最近、メインのエディター フォームから独立していくつかの他のフォームを実行できるように、マルチ スレッドにするようにセットアップする必要があります。基本的に、メイン ページからボタンをクリックして他のフォームを実行することを除いて、これらの他のフォームとメイン エディターの間に最小限の通信があります。
そのため、多くのグーグル検索から、現在のアプリをactivex exeとして設定し、global-multi-useに設定されたクラスを追加してこれを可能にすることにより、現在のアプリをマルチスレッドに変換する方法を見つけました。現在、デバッグ モードで編集とテストを行っているときに、終了時に多くの奇妙なクラッシュが発生することがあることがわかりました。
'main.frm - button click call
'On the button click, create a new object
Set obj = CreateObject("MyApp.clsThread")
Call obj.NewThread
'clsThread
' Create a new form and load it to run on a new thread
Public Sub NewThread()
Dim frm As Object
Set frm = New frmDogbert
Load frmDogbert
frm.show
Set frm = Nothing
End Sub
アプリがより不安定になっているように見えるのではないかと心配しているので、これを行うときに絶対に知っておくべきこと、つまり潜在的な問題などは何ですか? または、これを行うより良い方法はありますか?
アップデート:
アプリを強制的にハッキングして疑似マルチスレッド アプリにする代わりに、ここの善良な人々からのアドバイスを受けて、コンポーネントを標準の exe にリファクタリングし、アプリを標準の exe に戻してシェル経由で呼び出しました。美しく動作します:)
ありがとう