次のスレッド関数を検討してください。
UINT MyClass::threadFunc(LPVOID lParam)
{
// 1. Initialize stuff
// 2. Validate stuff
// 3. Do first task
// 4. Do second task
// 5. Un-initialize everything and return
}
このスレッドは、アプリケーションのダイアログによって作成されます。このスレッドは、ダイアログの存続期間中に 1 回だけ実行されます (これはワーカー スレッドです)。
何らかの非同期イベント (ボタンのクリック、その他のイベントの通知など) が発生した場合、このスレッドがすぐに戻るように通知して、(このスレッドが終了するのを待った後) ダイアログが正常に終了できるようにします。このスレッドはまだ実行されているため、ダイアログを終了することはできません。
私はC ++に比較的慣れていませんが、これは私が考えていたものです(疑似コード):
- スレッド関数を で囲みます
try-catch
。 - その非同期イベントの発生時に、スレッド終了例外をスローします。
これはうまくいかなかったので、少し調べたところ、これに似た答えが見つかりました。しかし、何らかの理由で、これを達成するためのはるかに簡単な方法があると感じています。上記のアイデアを実装する前に、明確にしたかっただけです。
ありがとう!