Книга: Программирование мобильных устройств на платформе .NET Compact Framework

Листинг 9.3. Код для запуска и тестирования приведенного выше тестового кода

Листинг 9.3. Код для запуска и тестирования приведенного выше тестового кода

//Класс, который будет управлять выполнением нового потока
private ThreadExecuteTask m_threadExecute;
//Класс, метод которого мы хотим выполнять в асинхронном режиме
Test1 m_testMe;
//----------------------------------------------------------
//Этот код должен быть запущен ранее другого кода, поскольку
//он запускает новый поток выполнения!
//
//Создать новый поток и обеспечить его выполнение
//----------------------------------------------------------
private void buttonStartAsyncExecution_Click(object sender, System.EventArgs e) {
 //Создать экземпляр класса, метод которого мы хотим вызвать
 //в другом потоке
 m_testMe = new Test1();
 //Упаковать точку входа метода класса в делегат
 ThreadExecuteTask.ExecuteMeOnAnotherThread delegateCallCode;
 delegateCallCode = new ThreadExecuteTask.ExecuteMeOnAnotherThread(m_testMe.ThreadEntryPoint);
 //Дать команду начать выполнение потока!
 m_threadExecute = new ThreadExecuteTask(delegateCallCode);
}
//Проверить состояние выполнения
private void buttonCheckStatus_Click(object sender, System.EventArgs e) {
 //Запросить у класса управления потоком, в каком состоянии он находится
 System.Windows.Forms.MessageBox.Show(m_threadExecute.State.ToString());
 //Запросить класс, метод которого выполняется в потоке,
 //о состоянии выполнения
 System.Windows.Forms.MessageBox.Show(m_testMe.m_loopX.ToString());
}
//Принудительно вызвать запрещенное изменение состояния
//(это приведет к возбуждению исключения)
private void buttonCauseException_Click(object sender, System.EventArgs e) {
 m_threadExecute.setProcessingState(ThreadExecuteTask.ProcessingState.notYetStarted);
}
//Послать асинхронному коду запрос с требованием отмены его выполнения
private void buttonAbort_Click(object sender, System.EventArgs e) {
 m_threadExecute.setProcessingState(ThreadExecuteTask.ProcessingState.requesAbort);
}

Оглавление книги


Генерация: 0.050. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз