.NETにゆっくりと移行する必要があるVB6コードがあります。この中にはウェブへの呼び出しが必要なものもあります。私は.NET DLLからWeb呼び出しを行い、完了したらイベントを起動します。私はVB6でイベントを処理します。これで私のテストマシンと大半のユーザーのマシンで正常に動作しますが、イベントが発生したときにいつかプログラムの一貫したクラッシュが発生するユーザーもいます。.NETで非同期コードとイベントを安全に実行してVB6で処理できるようにするにはどうすればよいですか?
私はこれがスレッドの問題だと思っています。では、.NET側のスレッドをどのように処理する必要がありますか? .NETコードが呼び出されたときに同期コンテキストが存在しないので、それが問題である可能性があります。私はどのようにVB6の呼び出しスレッドに非同期操作を取得しますか?私のVB6コードはSTAであり、COMを介して自動的にVB6スレッドにマーシャルされることがありますが、間違っていたのでしょうか?私はそれが実際にスレッドの問題であれば、何をすべきかを十分に理解していません。
私は、コンピュータにクラッシュの問題があるパターンと見つからないパターンを見つけることができませんでした。
はい、コンストラクタを呼び出したスレッドでイベントを発生させる必要があります。 SynchronizationContextが必要な場合は、簡単にWinformsフォームから取得できます。 1つは十分です、それは見える必要はありません、ちょうどそのハンドルのプロパティを読んで、それは行くのが良いです。 –
ええと、VB6フォームからどうやって取得できますか?私は.NETでフォームを開けません – bzuillsmith
可能性のあるターゲットマシンで.Netフレームワークを分けて比較しようとしましたか? Microsoftは最近の.Netフレームワークのバージョンに対して完全な下位互換性を主張していますが、その文が複数回見つかったのは基本的には純粋な馬鹿です。 – Stavm