Почему выход из приложения занимает так много времени? Windows Mobile 6.5 C # - PullRequest
0 голосов
/ 27 июня 2011

В моем приложении Windows, когда пользователь нажимает кнопку выключения питания, я делаю следующее:

        void PowerButton_ButtonClicked(object sender)
    {
        DialogResult dl = MessageBox.Show(Globals.SECUEXIT, Globals.CMD_EXIT, MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
        if (dl == DialogResult.Cancel)
        {
            return;  //Power off canceled, nothing to do
        }
        else
        {
            Program.btConn.send(BtMsg.OFF);          //Send the turn off instruction to the BT device.
            Program.scr_SplashScreen.exitRequest();  
            Application.Exit();
        }
    }

Потребуется ~ 15 секунд, пока приложение не закроется на моем мобильном телефоне. Как я могу ускорить процесс?

Спасибо!

1 Ответ

2 голосов
/ 27 июня 2011

Мы понятия не имеем, что на самом деле делает ваше приложение, когда оно закрывается. Что происходит после звонка Application.Exit()? Среда выполнения должна очищать вещи - поэтому она должна вызывать Dispose для объектов и запускать этот код, завершать все, закрывать соединения и любые открытые аппаратные интерфейсы, останавливать все дочерние потоки и освобождать память GC. Вы можете легко получить что-то в методе Dispose или Finalizer, выполнение которого занимает много времени.

Если вы еще не понимаете, что является причиной проблемы, начните удалять большие фрагменты объектов, чтобы увидеть, какой из них вызывает медлительность, а затем углубиться в него, удаляя все меньшие и меньшие кусочки, пока не найдете его.

...