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

 //и блокировать поток выполнения до тех пор,

 //пока файл не будет передан


 //1a. Вызвать функцию в синхронном режиме

 //и блокировать поток выполнения до тех пор,

 //пока файл не будет передан

 this.Text = "Trying to send...";


 //1b. Подождать, пока клиент не будет найден, а затем передать файл

 irdaFileSend.LoopAndAttemptIRSend;


 //1c. Информировать пользователя о том, что файл передан

 System.Windows.Forms.MessageBox.Show("File sent!");

 this.Text = "IrDA: Sent!";


 //2. Вызвать функцию в асинхронном режиме и поручить

 //передачу файла фоновому потоку

 //irdaFileSend.LoopAndAttemptIRSendAsync;


 //ПРИМЕЧАНИЕ: Если мы вызываем функцию в асинхронном режиме, то должны

 //периодически проверять, не завершила ли она выполнение, путем

 //вызова метода 'irdaFileSend.Status'

}


private void buttonTestFileReceive_Click(object sender, System.EventArgs e) {

 //Если файл назначения уже существует, уничтожить его

 const string fileName = "\\myTestReceiveFile.txt";

 if (System.IO.File.Exists(fileName)) {

  System.IO.File.Delete(fileName);

 }


 IrDAFileReceive irdaFileReceive;

 irdaFileReceive = new IrDAFileReceive(fileName, myIrDASocketName);


 //Имеется 2 режима: 1 - Sync (синхронный), 2 — Async (асинхронный)


 //1. Вызвать функцию в синхронном режиме

 //и блокировать поток выполнения до тех пор,

 //пока файл не будет получен


 //1a. Информировать пользователя о том, что мы ожидаем получения файла

 this.Text = "Waiting to receive...";


 //1b. Ожидать, пока не будет сделана попытка установления с нами связи

 //и передачи файла

 irdaFileReceive.WaitForIRFileDownload;


 //1c. Информировать пользователя о том, что мы получили переданный файл

 this.Text = "IrDA: received!";

 System.Windows.Forms.MessageBox.Show("File received!");


 //2. Вызвать функцию в асинхронном режиме и поручить

 //получение файла фоновому потоку

 //irdaFileReceive.WaitForIRFileDownloadAsync;


 //ПРИМЕЧАНИЕ: Если мы вызываем функцию в асинхронном режиме, то должны

 //периодически проверять, не завершила ли она выполнение, путем

 //вызова метода 'irdaFileReceive.Status'

}

Листинг 15.4. Класс IrDAIrDAFileSend

//====================================================================

//Этот класс является клиентом IrDA. Он осуществляет поиск сервера

//IrDA, имя которого совпадает с именем службы IrDA, и после того, как

//он найден, направляет ему поток данных файла.

//====================================================================

class IrDAFileSend {

 private string m_descriptionOfLastSendAttempt;

 private string m_IrDAServiceName;

 private string m_fileToSend;

 private bool m_wasSenderStopped;

 public enum SendStatus {

Перейти на страницу:

Похожие книги

Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

Эндрю Хант , Дэвид Томас , А. Алексашин

Программирование / Книги по IT
Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT