Собственно есть код который довольно долго обрабатываеться и в результате его работы программа останавливаеться, и уж очень не хочеться что бы так происходило. Т. е. я хочу создать отдельный процесс который будет обрабатываться отдельно.... для этого делую так:
- Код: Выделить всё
Dim sAlertMessage As String
Sub AlertMessageShow()
MsgBox(sAlertMessage)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim l(0 To 100) As Threading.Thread
Dim i As Integer = 0
For i = 0 To 3 Step 1
l(i) = New Threading.Thread(AddressOf AlertMessageShow)
l(i).Name = "Message" & i
sAlertMessage = "Ошибка 404 №" & i
l(i).Start()
Next
End Sub
Конечно в AlertMessageShow() гораздо больше кода , но для анализа.... Но в результате выполнения такого кода получаю не хорошие результаты:
Выскакивает как положено четыре окошка но два из них с одинаковым индексом, т.е. два окна с надписью "Ошибка 404 №2", с чем связано в принципе понятно, два процесса считывают переменную котора не успела измениться, вопрос в том как этого избежать?
Пытался прописать функцию вот так:
- Код: Выделить всё
Sub AlertMessageShow(ByVal sAlertMessage As String)
И соотвецственно так:
- Код: Выделить всё
l(i) = New Threading.Thread(AddressOf AlertMessageShow("Ошибка 404" & vbCrLf & i))
но он ругаеться что 'AddressOf' opersnd must be the name of method(without parenthes)
Помучевшись еще немного, понял что надо у когонить узнать
А теперь внимание вопрос: Как мне вообще передать в процесс хоть какую нибудь информацию строку ну или на крайний случай индекс?