Книга: Программирование мобильных устройств на платформе .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);
}
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Повышение производительности приложений с помощью хранимых процедур
- Дополнительные национальные кодовые страницы и порядки сортировки
- Глава 5 Агрессивные формы кода и борьба с ними
- Стиль написания исходного кода
- 1.4. Кодирование информации
- 1.4.1. Кодирование во время выполнения
- Три способа кодирования звука
- Листинг 15.11. Код для загрузки файла с Web-сервера
- 2. Пример создания базового отношения в записи на псевдокоде
- 5. Нормальная форма Бойса – Кодда (NFBC)
- Приложение 10. Коды ошибок