2

実行に 3 分以上かかる SQL コマンドを呼び出す必要があります。

明らかに、私はそれを呼び出して終了するのを待ちたいだけではありません。

私がやりたいことは、スレッドを作成し、その中で実行することです。

また、「まだそこにいますか?」という言葉も使いたくありません。メソッドであり、スレッドが完了した呼び出し元のスレッドでデリゲートを呼び出すことを優先します。

だから私はこれをメインスレッドとして持っています。

public Thread Process()
{
    worker = new Worker { date = date, dc = dc, despatchProcess = despatchProcess };
    workerThread = new Thread(worker.process);
    workerThread.Start();
    return workerThread;
}

したがって、ワーカー内では、このメイン スレッド内でデリゲートを呼び出す必要があります。

これを実装する最良の方法は何ですか?

4

3 に答える 3

0

十分に新しいバージョンの .NET を使用している場合は、他の回答を使用Taskasync/awaitて完全に適切なオプションです。それ以外の場合は、「RunWorkerCompleted」イベントをリッスンし、オプションでキャンセルを処理できるBackgroundWorkerを使用するでしょう。

于 2013-05-28T23:28:16.093 に答える