VB6 exe としてコンパイルされた VB6 プロジェクトがあります。
起動オブジェクトとして単純なフォームを持っています。
regasm された .NET dll を介して .NET モーダル フォームを起動し、コールバック COM インターフェイス (IHandler) の実装を渡します。
.NET は VB6 の IHandler 実装にコールバックします。
VB6 は、vbModal を使用して新しいフォームを表示しようとします。VB6 フォームは、モーダル .NET フォームがまだ表示されているため、操作がブロックされています。
これまたは推奨されるアプローチを回避する方法はありますか?
新しい (STA) (マネージド) スレッドで VB6 にコールバックしようとしましたが、MyCallbackForm.Show vbModal を実行しようとすると、「無効なプロシージャ コールまたは引数です。」というメッセージが表示されます。新しいスレッドでコールバックしていること...
更新: VB6 プロジェクト タイプを ActiveX exe に設定した場合、新しいスレッドでコールバックを正常に作成し、VB6 フォームをモーダルに表示することができました...しかし、それを行うと、コールバックでスレッドが失われたように見えました。 VB6 から .NET へのその後の呼び出しで、クロス スレッド例外が発生しました。これは、ActiveX exe を使用するときのスレッド モデルに関係していると思います。