0

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何度か使用する必要があるため、これは一般的であり、これを行うのに適切ですか? 別のスレッドで何かを開始する方法があり、このスレッドが終了した後、メインスレッドに残りますか?

4

1 に答える 1