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

 private void setStatus(ReceiveStatus newStatus) {

  //Обеспечить многопоточную безопасность для предотвращения

  //параллельного выполнения операций чтения/записи

  lock(this) {

   m_ReceiveStatus = newStatus;

  } //конец lock

 }


 //--------------------------------------------------

 // [in] filename: желаемое имя для входного файла IR

 //--------------------------------------------------

 public IrDAFileReceive(string filename, string irdaServiceName) {

  //Имя сокета IrDA, который мы хотим открыть

  m_IrDAServiceName = irdaServiceName;

  //Имя файла, в котором мы хотим сохранить полученные данные

  m_fileNameForDownload = filename;

 }


 //----------------------------------------------------------

 //Обеспечивает асинхронный прием файла через IR

 //

 // [in] filename: имя файла, в который осуществляется запись

 //----------------------------------------------------------

 public void WaitForIRFileDownloadAsync {

  //Заметьте, что сейчас мы находимся в режиме подготовки

  setStatus(ReceiveStatus.NotDone_SettingUp);


  //-------------------

  //Создать новый поток

  //-------------------

  System.Threading.ThreadStart threadEntryPoint;

  threadEntryPoint =

   new System.Threading.ThreadStart(WaitForIRFileDownload);

  System.Threading.Thread newThread = new System.Threading.Thread(threadEntryPoint);


  //Запустить поток на выполнение

  newThread.Start;

 }


 //------------------------------------------

 //Открывает порт IR и ожидает загрузки файла

 //------------------------------------------

 public void WaitForIRFileDownload {

  System.IO.Stream outputStream = null;

  System.Net.Sockets.IrDAClient irdaClient = null;

  System.IO.Stream irStreamIn = null;

  try {

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

   //Задать и загрузить файл!

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

   internal WaitForIRFileDownload(ref outputStream,ref irdaClient, ref irStreamIn);

  } catch

  //Поглотить любые возникающие ошибки

  {

   setStatus(ReceiveStatus.Done_ErrorOccured);

  }

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

  //Освободить все ресурсы

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


  //Закрыть наш входной поток

  if (irStreamIn != null) {

   try {

    irStreamIn.Close;

   } catch {} //Поглотить любые возникающие ошибки

  }


  //Закрытие клиента IrDA

  if (irdaClient != null) {

   try {

    irdaClient.Close;

   } catch {} //Поглотить любые возникающие ошибки

  }


  //Закрыть файл, в который осуществлялась запись

  if (outputStream != null) {

   try {

    outputStream.Close;

   } catch {} //Поглотить любые возникающие ошибки

  }


  //Закрыть прослушивающее устройство, если оно выполняется

  if (m_irListener != null) {

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

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

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

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

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

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

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

Роберт Лав

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