Подтвердить что ты не робот

Как изящно обрабатывать режимы спящего режима/спящего режима в приложении winforms?

Я пишу приложение формы Windows в .net, используя С#.

У меня проблема: если моя программа запускается, когда компьютер переходит в состояние сна и/или спящего режима (я не уверен, что в это время какой-либо из них или если они вызвали проблему), когда машина снова просыпается программа просто зависает. Единственный способ выйти из него - это убить процесс из диспетчера задач.

Это по очевидным причинам не так, как я хочу, чтобы программа функционировала. Даже если я просто закрою программу, когда она войдет в эти состояния, это будет хорошо, но я не совсем уверен, как это сделать или если есть более изящный способ обработки этого.

4b9b3361

Ответ 1

Вам нужно:

using Microsoft.Win32;   

И это код:

 void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
    {
        if(e.Mode == PowerModes.Suspend)
        {
            this.GracefullyHandleSleep();
        }
    }

Это то, с чем я пошел.

Ответ 2

Обработка этих событий может быть обходной. Но прежде чем применять этот вид работы, я попытаюсь выяснить, что делает приложение, когда ОС перешла в спящий режим.

Происходит висит, хотя приложение просто простое?

Является ли приложение выполняющим какую-либо работу на низком уровне (связь с драйверами устройств или внешним оборудованием), которые не должны прерываться?

Использует ли приложение какое-то сетевое подключение?