Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
Dim irdaFileReceiver As IrDAFileReceive
irdaFileReceiver = New IrDAFileReceive(fileName, _
myIrDASocketName)
'Имеется 2 режима: 1 — Sync (синхронный), 2 - Async (асинхронный)
'1. Вызвать функцию в синхронном режиме
' блокировать поток выполнения до тех пор, пока
'файл не будет получен
'1a. Информировать пользователя о том, что мы ожидаем получения файла
Me.Text = "Waiting to receive..."
'1b. Ожидать, пока не будет сделана попытка установления с нами связи
'и передачи файла
irdaFileReceiver.WaitForIRFileDownload
'1с. Информировать пользователя о том, что мы получили переданный файл
Me.Text = "IrDA: received!"
MsgBox("File received!")
'2. Вызвать функцию в асинхронном режиме и поручить
'получение файла фоновому потоку
'irdaFileReceive.WaitForIRFileDownloadAsync
'ПРИМЕЧАНИЕ: Если мы вызываем функцию в асинхронном режиме, то должны
'периодически проверять, не завершила ли она выполнение, путем
'вызова метода 'irdaFileReceive.Status'
End Sub
Листинг 15.4. Класс IrDAFileSend
Option Strict On
'====================================================================
'Этот класс является клиентом IrDA. Он осуществляет поиск сервера
'IrDA, имя которого совпадает с именем службы IrDA, и после того, как
'он найден, направляет ему поток данных файла,
'====================================================================
Class IrDAFileSend
Private m_descriptionOfLastSendAttempt As String
Private m_IrDAServiceName As String
Private m_fileToSend As String
Private m_wasSenderStopped As Boolean
Public Enum SendStatus
AttemptingToSend
Finished_Successfully
Finished_Aborted
Finished_Error
End Enum
Private m_SendStatus As SendStatus
Public ReadOnly Property Status As SendStatus
Get
'Блокировка выполнения параллельных операций чтения/записи в m_SendStatus
SyncLock (Me)
Return m_SendStatus
End SyncLock
End Get
End Property
Private Sub setStatus(ByVal newStatus As SendStatus)
'Блокировка выполнения параллельных операций чтения/записи в m SendStatus
SyncLock (Me)
m_SendStatus = newStatus
End SyncLock
End Sub
Public ReadOnly Property ErrorText As String
Get
Return m_descriptionOfLastSendAttempt
End Get
End Property
'-----------
'КОНСТРУКТОР
'-----------
Public Sub New(ByVal fileToSend As String, ByVal irdaServiceName As String)
'Имя сокета IrDA, поиск которого мы хотим осуществить
m_IrDAServiceName = irdaServiceName
'Файл, который мы хотим передать
m_fileToSend = fileToSend
End Sub
'--------------------------------------------------------------
'Запускает новый поток для осуществления попытки отправки файла
'--------------------------------------------------------------
Public Sub LoopAndAttemptIRSendAsync
'Мы находимся в режиме передачи
setStatus(SendStatus.AttemptingToSend)
'Пользователь пока что не отменил выполнение операции
m_wasSenderStopped = False
'Это функция, которую должен запустить на выполнение новый поток
Dim threadEntryPoint As System.Threading.ThreadStart
threadEntryPoint = _
New System.Threading.ThreadStart(AddressOf LoopAndAttemptIRSend)
'-----------------------------------
'Создать новый поток и запустить его
'-----------------------------------
Dim newThread As System.Threading.Thread = _
New System.Threading.Thread(threadEntryPoint)
newThread.Start
'Вперед!
End Sub
'-----------------------------------------------------
'Входит в цикл и пытается передать файл посредством IR
'-----------------------------------------------------
Поделиться:
Популярные книги
Бандит
1. Петр Синельников
Фантастика:
фэнтези
7.92
рейтинг книги
Бастард Императора. Том 3
3. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Граф
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Газлайтер. Том 1
1. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Хозяин Стужи 3
3. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
7.00
рейтинг книги
Дважды одаренный. Том VII
7. Дважды одаренный
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Развод в 45. От любви до ненависти
6. Развод
Любовные романы:
остросюжетные любовные романы
5.40
рейтинг книги
Имперец. Том 3
2. Имперец
Фантастика:
боевая фантастика
попаданцы
альтернативная история
7.43
рейтинг книги
Паладин из прошлого тысячелетия
1. Соприкосновение миров
Фантастика:
боевая фантастика
попаданцы
6.25
рейтинг книги
Мечник Вернувшийся 1000 лет спустя
1. Вернувшийся мечник
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Чужак из ниоткуда 2
2. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Наша навсегда
2. Наша
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Хозяин Теней
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга Х
10. РОС: Кодекс Крови
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
аниме
5.00