Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
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;}
}
}
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,
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;
Поделиться:
Популярные книги
Бандит
1. Петр Синельников
Фантастика:
фэнтези
7.92
рейтинг книги
Черный Маг Императора 20
20. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Война
7. Ермак
Фантастика:
боевая фантастика
альтернативная история
5.25
рейтинг книги
Черный Маг Императора 23
23. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Седьмая встреча
Проза:
современная проза
4.00
рейтинг книги
День поминовения
Проза:
современная проза
5.00
рейтинг книги
Ученик. Книга вторая
2. Ученик
Фантастика:
фэнтези
5.40
рейтинг книги
Я снова не князь! Книга XVII
17. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Лев Толстой
363. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Чужак из ниоткуда 2
2. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Печать мастера
6. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
фэнтези
6.00
рейтинг книги
Тринадцатый
1. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
6.80
рейтинг книги
Кодекс Охотника XXXI
31. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Слово мастера
11. Гибрид
Фантастика:
попаданцы
аниме
5.00