プロセス中にタイマーを開始すると、プログラムがフリーズします。それを解決する方法はありますか?タイマーの動作中に GUI のすべてのボタンがフリーズしないようにするには?
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Do somting...(I sending mail throught SMTP)
End Sub
これはタイマーとは関係ありません。
UI スレッドで長い (ネットワークにバインドされた) 操作を実行しています。
コードが UI スレッドで実行されているときはいつでも、UI は応答できません。
その操作を非同期で、またはバックグラウンド スレッドで実行する必要があります。
Slack の回答をまだ理解していない場合は ...
スレッドをインスタンス化する
Public t1 As Threading.Thread
タイマーからスレッドへの呼び出しを行います。
Private Sub someTimer(sender As Object, e As EventArgs) Handles someTimer.Tick
t1 = New Thread(New ThreadStart(AddressOf SomeSubRoutine))
t1.Start()
end sub
サブルーチンで電子メール コードを実行する
sub Subroutine()
email code here // make sure that therer are no GUI or Main Thread calls else you have to get into delegates and invoke methods
end sub
完了しました。Gui スレッドはハングアップしませんが、スレッドを直接呼び出すタイマーに近づかないことをお勧めします