Потому что вызывающий код будет ожидать завершения метода (в твоем случае ping), то есть подвесит программу. С чем мы боремся. После включения таймера метод завершится, вернув управление основной программе, а когда таймер сработает, пинговать и висеть будет другая программа, а после отвисания проинформирует основную программу о том, что пинг закончился, посредством события. Без него никак.Почему пинговать надо через таймер в классе, и можно ли обойтись без событий(поне могу понять что к чему), почему нельзя вызвать метод класса (в моем случае ping).
Твоя Private Sub stping() должна выглядеть примерно так:
- Код: Выделить всё
Dim WithEvents lPing as PingExe.PingClass
Dim i
Private Sub stping()
i = 1
IP_ADR = GrdTable.TextMatrix(i, 1)
If Len(IP_ADR) <> 0 Then lPing.Ping IP_ADR
end Sub
Private Sub lPing_PingComplete(Success as Boolean)
If Success then
Avaible = "ONLINE"
Else
Avaible = "OFFLINE"
End If
do
i = i + 1
Loop Until Len(GrdTable.TextMatrix(i, 1))<>0 Or i=15
IP_ADR = GrdTable.TextMatrix(i, 1)
If Len(IP_ADR) <> 0 Then lPing.Ping IP_ADR
End Sub