私はいくつかの仕事をしているスレッドを持っています。作業の進行中に、ユーザーがシステムをスリープ/サスペンドさせた場合、スレッド自体をそこで終了させたいと思います。私が今直面している問題は、スリープから再開したときにスレッドが終了せず、アプリケーションがハングすることです。これを処理するためにeventhandlerを作成する必要がありますか?はいの場合、どのように作成しますか?
私のスレッドはUI(C#)で作成されています。スリープ/サスペンドはC++コードで処理されます。
私はいくつかの仕事をしているスレッドを持っています。作業の進行中に、ユーザーがシステムをスリープ/サスペンドさせた場合、スレッド自体をそこで終了させたいと思います。私が今直面している問題は、スリープから再開したときにスレッドが終了せず、アプリケーションがハングすることです。これを処理するためにeventhandlerを作成する必要がありますか?はいの場合、どのように作成しますか?
私のスレッドはUI(C#)で作成されています。スリープ/サスペンドはC++コードで処理されます。
Windowsの電源管理イベントを使用して、システムがスリープして反応するタイミングを検出できます。
それらを使用するには、WndProcをオーバーライドし、WM_POWERBROADCASTイベントをリッスンします
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_POWERBROADCAST:
...
}
}
ここに詳細な例を含む非常に優れた概要があります。
http://www.codeproject.com/Articles/192084/Responding-to-Windows-power-management-events-stan