1

次のスレッド関数を検討してください。

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 ++に比較的慣れていませんが、これは私が考えていたものです(疑似コード):

  1. スレッド関数を で囲みますtry-catch
  2. その非同期イベントの発生時に、スレッド終了例外をスローします。

これはうまくいかなかったので、少し調べたところ、これに似た答えが見つかりまし。しかし、何らかの理由で、これを達成するためのはるかに簡単な方法があると感じています。上記のアイデアを実装する前に、明確にしたかっただけです。

ありがとう!

4

1 に答える 1

1

いくつか検索すると、これらが見つかりました:

于 2013-03-09T06:57:11.990 に答える