Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
streamOutToIrDA.Close; //Закрыть поток
streamOutToIrDA = null;
//Освободить локальный файл
streamInFromFile.Close;
streamOutToIrDA = null;
//Освободить порт IrDA
irDASender.Close;
irDASender = null;
//Успешное завершение!!!
return true;
}
} //конец класса
Листинг 15.5. Класс IrDAFileReceive
//-------------------------------------------------------------------
//Обеспечивает прием файла через IrDA (инфракрасный порт).
//
//Этот класс НЕ является реентерабельным и не должен вызываться более
//чем одной функцией за один раз. Если необходимо иметь несколько
//сеансов связи через IR, это необходимо делать путем создания
//нескольких различных экземпляров данного класса.
//-------------------------------------------------------------------
public class IrDAFileReceive {
private bool m_wasListenerStopped;
private string m_IrDAServiceName;
private string m_fileNameForDownload;
private string m_errorDuringTransfer;
private System.Net.Sockets.IrDAListener m_irListener;
private ReceiveStatus m_ReceiveStatus;
public string ErrorText {
get {
return m_errorDuringTransfer;
}
}
//--------------------------
//Различные состояния приема
//--------------------------
public enum ReceiveStatus {
NotDone_SettingUp,
NotDone_WaitingForSender,
NotDone_Receiving,
Done_Success,
Done_Aborted,
Done_ErrorOccured
}
//------------------------------
// Возвращает состояние передачи
//------------------------------
public ReceiveStatus Status {
get {
//Обеспечить многопоточную безопасность для предотвращения
//параллельного выполнения операций чтения/записи
lock(this) {
return m_ReceiveStatus;
} //конец lock
} //конец get
} //конец свойства
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 {
Поделиться:
Популярные книги
Первый среди равных. Книга VIII
8. Первый среди Равных
Фантастика:
аниме
фантастика: прочее
эпическая фантастика
попаданцы
5.00
рейтинг книги
Сапер. Том II
2. Сапер
Фантастика:
альтернативная история
4.25
рейтинг книги
Моров. Том 5
4. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Вперед в прошлое 5
5. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Товарищ "Чума"
1. Товарищ "Чума"
Фантастика:
попаданцы
альтернативная история
4.00
рейтинг книги
Анти-Ксенонская Инициатива
7. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Наша навсегда
2. Наша
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Распутье
Сибириада
Проза:
военная проза
историческая проза
5.00
рейтинг книги
Мужчина моей судьбы
2. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.03
рейтинг книги
На границе империй. Том 10. Часть 5
23. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Источники силы
4. Иной в голове
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Зодчий. Книга III
3. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 35
35. История Телепата
Фантастика:
аниме
боевая фантастика
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга XII
12. Первый среди Равных
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00