Таким образом, целью этого является проверка соединения ftp-сервера, и если ftp встал, включите таймер 1. Я прочитал, что потоки не работают синхронно, и это вызывает проблему. Без потока он отлично работает, но программа зависает и перестает отвечать постоянно.Активация таймера из другого потока
Как я могу активировать таймер из другого потока? Может быть, вызов и делегирование будут работать? Но я не знаю, как это сделать.
Public Function CanPortOpen(ByVal HostName As String, ByVal Port As Integer) As Boolean
Dim TCP As New System.Net.Sockets.TcpClient
Try
TCP.Connect(HostName, Port)
Catch
End Try
If TCP.Connected = True Then
CanPortOpen = True
TCP.Close()
Timer1.Enabled = True
Else
CanPortOpen = False
TCP.Close()
Timer1.Enabled = False
FTPup.Abort()
End If
End Function
Public Sub CheckConnection()
CanPortOpen("HostName", Port)
End Sub
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
TestFTP = New System.Threading.Thread(AddressOf CheckConnection)
TestFTP.IsBackground = True
TestFTP.Priority = Threading.ThreadPriority.AboveNormal
TestFTP.Start()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
FTPup = New System.Threading.Thread(AddressOf UploadToFTP)
FTPup.IsBackground = True
FTPup.Priority = Threading.ThreadPriority.AboveNormal
FTPup.Start()
End Sub
Почему вы хотите, чтобы все эти таймеры здесь вообще? Вам нужно время задержки между проверкой того, что TCP-соединение можно открыть и запустить загрузку? Почему все эти разные потоки? Почему бы просто не начать поток, который загружает и сообщает о прогрессе, успехе или неудаче? –
@J ... Да, таймеры предназначены для задержки. Если оба они находятся в одном потоке, это означает, что я не могу изменить интервалы? Хотя я все еще изучаю все, поэтому, возможно, это не лучший подход. – rip2444
... так что вы хотите проверить, что соединение можно сделать, а затем запустить загрузку после ожидания? Я нахожу это странным обстоятельством.Нить может спать, в любом случае, если вам нужно, чтобы подождать некоторое время. Однако нет причин, почему TCP-соединение нуждается в отдыхе, прежде чем вы сможете снова открыть его. –