ref irDASender, ref streamInFromFile);

   } catch (System.Exception eUnexpected) //Неожиданная ошибка!!!

   {

    setStatus(SendStatus.Finished_Error); //Отметить возникновение сбоя

    m_descriptionOfLastSendAttempt =

     "Unexpected error in IR send loop. " + eUnexpected.Message;

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

    //Освободить все распределенные нами ранее ресурсы

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

    if (streamOutToIrDA != null) {

     try {

      streamOutToIrDA.Close;

     } саtch{};//Поглотить любую ошибку

     streamOutToIrDA = null;

    }

    if (streamInFromFile != null) {

     try {

      streamInFromFile.Close;

     } catch{};//Поглотить любую ошибку

     streamInFromFile = null;

    }

    if (irDASender != null) {

     try {

      irDASender.Close;

     } catch{}; //Поглотить любую ошибку

     irDASender = null;

    }

    return; //Выход

   }

   //Проверить успешность выполнения

   if (bSuccess == true) {

    m_descriptionOfLastSendAttempt = "Success!";

    setStatus(SendStatus.Finished_Successfully);

    return;

   }

   //Проверить, не была ли операция отменена пользователем

   if (m_wasSenderStopped == true) {

    m_descriptionOfLastSendAttempt = "User Aborted.";

    setStatus(SendStatus.Finished_Aborted);

    return;

   }

   //B противном случае... Нам пока не удалось обнаружить сервер IrDA,

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

   //цикла и попытаемся найти сервер.

  }

  //Мы никогда не попадем в это место программы при выполнении

 }

 //Попытаться передать поток ввода-вывода (например, файл) посредством IR

 //[возвращаемое значение]:

 // true: успешная передача файла

 // false: файл не был успешно передан

 private bool sendStream(

  out string errorDescription, ref System.IO.Stream streamOutToIrDA,

  ref System.Net.Sockets.IrDAClient irDASender, ref System.IO.Stream streamInFromFile) {

  errorDescription = "";

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

  //Создание нового клиента IRDA

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

  try {

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

   //Возврат произойдет довольно быстро. Клиент будет выбран

   //и возвращен, если прослушивающие клиенты отсутствуют.

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

   irDASender = new System.Net.Sockets.IrDAClient(m_IrDAServiceName);

  } catch (System.Exception eCreateClient) {

   //B данном случае могло возникнуть несколько ситуаций:

   //#1: отсутствуют прослушивающие устройства

   //#2: прослушивающее устройство существует, но не реагирует

   // (может отказаться от разговора)

   errorDescription = eCreateClient.Message;

   return false;

  }

  //B данном случае могло возникнуть несколько ситуаций:

  //#1: Мы получили соединение от приемного устройства IR

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

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