Столкнулся с неожиданной проблемой, которая не даёт двигаться дальше.
Вот, набросал очень упрощённый пример...
На порту COM4 устройства висит GPS-приёмник.
Есть форма, на ней лежит кнопка Button1. Форма содержит следующий код:
- Код: Выделить всё
Imports System
Imports System.Net
Imports System.IO.Ports
Public Class Form1
Private Function Open_Serial_Port() As SerialPort
Try
Dim ThePort As SerialPort = New SerialPort("COM4", 4800, Parity.None, 8, StopBits.One)
With ThePort
.NewLine = vbCrLf
.ReadTimeout = 2500
.WriteTimeout = 2500
.ReadBufferSize = 4096
.WriteBufferSize = 4096
.DataBits = 8
End With
ThePort.Open()
Return ThePort
Catch ex As Exception
Debug.WriteLine(ex.Message)
Return Nothing
End Try
End Function
Private Sub WriteIt(ByVal URL As String)
Dim ex As Exception
Dim myReq As HttpWebRequest = CType(WebRequest.Create(URL), HttpWebRequest)
'*****
'если подключены к интернету не через прокси, то эту часть следует закомментарить
Dim myProxy As New WebProxy
Dim newUri As New Uri("http://PROXY:80")
myProxy.Address = newUri
myProxy.Credentials = System.Net.CredentialCache.DefaultCredentials
myReq.Proxy = myProxy
'*****
myReq.Credentials = System.Net.CredentialCache.DefaultCredentials
Try
Dim myResponce As HttpWebResponse = myReq.GetResponse
myResponce.Close()
Debug.WriteLine(URL & " " & Now.ToString)
Catch ex
MsgBox(ex.Message)
End Try
End Sub
Public Sub DoWork()
Dim mySerialPort As SerialPort
Dim myString As String
'открываем порт
mySerialPort = Open_Serial_Port()
Do
'читаем из порта
myString = mySerialPort.ReadExisting
'запрос в интернет
WriteIt("http://www.ya.ru")
Threading.Thread.Sleep(2000)
Loop
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DoWork()
End Sub
End Class
Запустив проект, нажимаем кнопку. Происходит подключение к последовательному порту. Считав из него данные, программа пытается обратиться в интернет. Какое-то время всё работает нормально, но затем возникает исключение
A first chance exception of type 'System.SystemException' occurred in mscorlib.dll
A first chance exception of type 'System.IO.IOException' occurred in mscorlib.dll
A first chance exception of type 'System.SystemException' occurred in mscorlib.dll
A first chance exception of type 'System.Net.WebException' occurred in System.dll
Пробовал просто закомментарить кусок кода, в котором читаем из порта. В этом случае замечательно работаем целый день и никаких исключений не происходит. Равно как и при чтении из порта, без попыток обратиться в интернет - всё нормально.
А вот при обращении к нету после чтения из порта - происходят непонятности....
Пробовал запускать без прокси - результат тот же.
Помогите, а?