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

  AttemptingToSend,

  Finished_Successfully,

  Finished_Aborted,

  Finished_Error

 }

 private SendStatus m_SendStatus;

 public SendStatus Status {

  get {

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

   lock(this) {return m_SendStatus;}

  }

 }


 private void setStatus(SendStatus newStatus) {

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

  lock(this) {m_SendStatus = newStatus;}

 }


 public string ErrorText {

  get {return m_descriptionOfLastSendAttempt;}

 }


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

 //КОНСТРУКТОР

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

 public IrDAFileSend(string fileToSend,string irdaServiceName) {

  //Имя сокета IrDA, поиск которого мы хотим осуществить

  m_IrDAServiceName = irdaServiceName;

  //Файл, который мы хотим передать

  m_fileToSend = fileToSend;

 }


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

 //Запускает новый поток для осуществления попытки отправки файла

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

 public void LoopAndAttemptIRSendAsync {

  //Мы находимся в режиме передачи

  setStatus(SendStatus.AttemptingToSend);


  //Пользователь пока что не отменил выполнение операции

  m_wasSenderStopped = false;


  //Это функция, которую должен запустить на выполнение новый поток

  System.Threading.ThreadStart threadEntryPoint;

  threadEntryPoint = new System.Threading.ThreadStart(LoopAndAttemptIRSend);


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

  //Создать новый поток и запустить его

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

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

  newThread.Start; //Вперед!

 }


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

 //Входит в цикл и пытается передать файл посредством IR

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

 public void LoopAndAttemptIRSend {

  System.Net.Sockets.IrDAClient irDASender;

  System.IO.Stream streamOutToIrDA;

  System.IO.Stream streamInFromFile;


  //Пользователь пока что не отменил выполнение операции

  m_wasSenderStopped = false;

  setStatus(SendStatus.AttemptingToSend);


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

  //Непрерывное выполнение цикла, пока не удастся отправить сообщение

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

  while(true) {

   //Значения всех этих переменных должны быть нулевыми до и после

   //вызова 'sendStream(...)', если не было сгенерировано исключение!

   irDASender = null;

   streamOutToIrDA = null;

   streamInFromFile = null;


   //Попытаться передать поток

   bool bSuccess;

   try {

    bSuccess = sendStream(

     out m_descriptionOfLastSendAttempt, ref streamOutToIrDA,

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

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

Разработка ядра Linux
Разработка ядра Linux

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

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

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

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

Программирование / Книги по IT