У меня есть простой код, который ищет текстовый файл, читает строку текста, разбивает строку на точки с запятой и затем публикует результаты.
После того, как это было сделано, я создал действительно простой цикл while, который тратит 10 секунд, прежде чем идти на него снова ... вот код:
Private Sub checkTemps()
While Abort = False
Try
fileReader = New StreamReader(directory.Text & "currentTemp.dat")
rawData = fileReader.ReadLine()
fileReader.Close()
Dim dataArray() As String
dataArray = rawData.Split(";")
updateOutput("1", dataArray(0), dataArray(1))
updateOutput("2", dataArray(2), dataArray(3))
updateOutput("3", dataArray(4), dataArray(5))
updateOutput("4", dataArray(6), dataArray(7))
stpWatch.Start()
While stpWatch.Elapsed.Seconds < 10 And Abort = False
pollInterval(stpWatch.ElapsedMilliseconds)
End While
stpWatch.Stop()
stpWatch.Reset()
Catch ex As Exception
msgbox("oops!")
End Try
End While
closeOnAbort()
End Sub
Но когда дело доходит до цикла «тратить время» - кажется, что оно замедляет работу всего приложения? И я не могу понять, почему!
Итак, пара вопросов ... есть ли лучший способ сделать все это? и второе - кто-нибудь может обнаружить проблему?
Кажется, все остальные команды работают нормально - в этом приложении больше ничего нет. У меня есть другая программа, которая обновляет файл данных значениями, это просто приложение на стороне клиента для вывода температуры.
Любая помощь будет оценена.
Andrew
Дополнительная информация:
Я должен объяснить, что делает подпрограмма pollInterval!
Private Delegate Sub pollIntervalDelegate(ByVal value As Integer)
Private Sub pollInterval(ByVal value As Integer)
If Me.InvokeRequired Then
Dim upbd As New pollIntervalDelegate(AddressOf pollInterval)
Me.Invoke(upbd, New Object() {value})
Else
ProgressBar1.Value = value
End If
End Sub