UI がフリーズせずにサーバー接続 (2 秒かかる単純なボタンクリック) を開始する方法を知り、接続が確立されて UI を更新した後、UI の更新を介しBackgroundWorker
て内部で実行できますworker_RunWorkerCompleted event
が、これは別のスレッドであるため、使用する必要があります。Invoke
:
private void btnConnect_Click(object sender, EventArgs e)
{
btnConnect.Enabled = false;
BackgroundWorker worker = new BackgroundWorker();
worker.RunWorkerCompleted += worker_RunWorkerCompleted;
worker.DoWork += worker_DoWork;
worker.RunWorkerAsync();
}
作業を開始して接続します。
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
try
{
// Establish the connection...
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
接続が確立されたら、UI を更新します。
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// Update UI
}
私の質問は、呼び出しの使用を避けることができますか? 私のアプリケーションでは、ラベル、DatagridView を追加、削除、更新する必要があるいくつかのポイントがあり、このようにしてInvoke
何度か使用する必要があるため、これは一般的であり、これを行うのに適切ですか? 別のスレッドで何かを開始する方法があり、このスレッドが終了した後、メインスレッドに残りますか?