Вход/Регистрация
Программирование мобильных устройств на платформе .NET Compact Framework
вернуться

Салмре Иво

Шрифт:

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

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 {

AttemptingToSend,

Finished_Successfully,

Finished_Aborted,

Finished_Error

}

private SendStatus m_SendStatus;

public SendStatus Status {

get {

//Блокировка выполнения параллельных операций чтения/записи в m_SendStatus

lock(this) {return m_SendStatus;}

  • Читать дальше
  • 1
  • ...
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: