3

私はいくつかの仕事をしているスレッドを持っています。作業の進行中に、ユーザーがシステムをスリープ/サスペンドさせた場合、スレッド自体をそこで終了させたいと思います。私が今直面している問題は、スリープから再開したときにスレッドが終了せず、アプリケーションがハングすることです。これを処理するためにeventhandlerを作成する必要がありますか?はいの場合、どのように作成しますか?

私のスレッドはUI(C#)で作成されています。スリープ/サスペンドはC++コードで処理されます。

4

1 に答える 1

3

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

于 2012-08-24T16:52:28.173 に答える