Программирование мобильных устройств на платформе .NET Compact Framework (Салмре) - страница 601

> 'параллельного выполнения операций чтения/записи

> SyncLock (Me)

>  m_ReceiveStatus = newStatus

> End SyncLock 'end lock

>End Sub


>'--------------------------------------------------

>' (in) filename: желаемое имя для входного файла IR

>'--------------------------------------------------

>Public Sub New(ByVal filename As String, ByVal irdaServiceName As String)

> 'Имя сокета IrDA, который мы хотим открыть

> m_IrDAServiceName = irdaServiceName

> 'Имя файла, в котором мы хотим сохранить полученные данные

> m_fileNameForDownload = filename

>End Sub


>'----------------------------------------------------------

>'Обеспечивает асинхронный прием файла через IR

>' (in) filename: имя файла, в который осуществляется запись

>'----------------------------------------------------------

>Public Sub WaitForIRFileDownloadAsync()

> 'Заметьте, что сейчас мы находимся в режиме подготовки

> setStatus(ReceiveStatus.NotDone_SettingUp)

> '-------------------

> 'Создать новый поток

> '-------------------

> Dim threadEntryPoint As System.Threading.ThreadStart

> threadEntryPoint = _

>  New System.Threading.ThreadStart(AddressOf WaitForIRFileDownload)


> Dim newThread As System.Threading.Thread = _

>  New System.Threading.Thread(threadEntryPoint)

> 'Запустить поток на выполнение

> newThread.Start()

>End Sub


>'------------------------------------------

>'Открывает порт IR и ожидает загрузки файла

>'------------------------------------------

>Public Sub WaitForIRFileDownload()

> Dim outputStream As System.IO.Stream

> Dim irdaClient As System.Net.Sockets.IrDAClient

> Dim irStreamIn As System.IO.Stream


> Try

>  '=========================================================

>  'Задать и загрузить файл!

>  '=========================================================

>  internal_WaitForIRFileDownload(outputStream, irdaClient, irStreamIn)

> Catch 'Поглотить любые возникающие ошибки

>  setStatus(ReceiveStatus.Done_ErrorOccured)

> End Try


> '=============================================

> 'Освободить все ресурсы

> '=============================================

> 'Закрыть наш входной поток

> If Not (irStreamIn Is Nothing) Then

>  Try

>   irStreamIn.Close()

>  Catch 'Поглотить любые возникающие ошибки

>  End Try

> End If

> 'Закрытие клиента IrDA

> If Not (irdaClient Is Nothing) Then

>  Try

>   irdaClient.Close()

>  Catch 'Поглотить любые возникающие ошибки

>  End Try

> End If

> 'Закрыть файл, в который осуществлялась запись

> If Not (outputStream Is Nothing) Then

>  Try

>   outputStream.Close()

>  Catch 'Поглотить любые возникающие ошибки

>  End Try

> End If

> 'Закрыть прослушивающее устройство, если оно выполняется

> If Not (m_irListener Is Nothing) Then