重複の可能性:
すべての BeginInvoke の後に EndInvoke が続く必要がありますか?
EndInvoke() はオプションですか、一種のオプションですか、それとも絶対にオプションではありませんか?
マルチスレッド アプリケーションを使用しており、セカンダリ スレッドの 1 つは、数分ごとにメイン スレッドで実行するコードを取得する必要があります。戻り値はなく、2 番目のスレッドは、例外が発生したり実行に失敗したりしても気にしません。
これまでのところ、 を介してコードを実行するようにしていますがForm.Invoke
、通常よりもはるかに長く (数秒) かかることがあり、完了するまでスレッドをブロックします。数秒間停止することなく実行を継続できるようにするには、2 番目のスレッドが必要です。
BeginInvoke
うまく機能するように聞こえますが、EndInvoke
を待機したり戻り値を取得したりしたくないので、 を呼び出す場所が実際にはありません。また、呼び出されるコードに一連のネイティブ呼び出しが含まれていることを考えると、そうしないのが良い考えかどうかはわかりませんEndInvoke
。
まったく呼び出す必要EndInvoke
がありますか、または代わりに使用する必要があるコードをメインフォームスレッドで非同期に実行する他の方法がありますか?
ありがとう =)