3

私はグーグルを少し見ていますが、それを機能させることはできません。

ボタンを押すと、いくつかのプロセスが実行されます。

「Kill​​ All」ボタンを追加して、押したときにすべてを終了させたいのですが、プロセスを開始すると、終了するまで他のボタンを押すことができません。

private void button_checkZero_phones_Click(object sender, EventArgs e)
    {
        Thread thread = new Thread(new ThreadStart(WorkThreadFunction));
        thread.Start();
    }

private void button_kill_all_Click(object sender, EventArgs e)
    {
        System.Environment.Exit(1);
    }
4

3 に答える 3

2

非同期メソッドで「Kill​​ All」メソッドを実行する必要があります。長いプロセスを実行すると、メイン スレッドは常にブロックされます。

問題の詳細: 実行時間の長い操作中に WinForm アプリケーション UI がハングする

次のいずれかの方法を使用してください - Kill All を実行します。

  1. BackgroundWorker
  2. 別のスレッド
  3. 別のタスク
  4. 非同期/待機を使用する
  5. リアクティブ拡張機能

すべてのプロセスが終了したことを通知するには、いくつかの方法があります。どの方法を使用するかによって異なります。

于 2013-08-28T09:53:06.850 に答える
0

これは Windows アプリですか? 古臭い感じで、他の開発者を巻き込むことを楽しんでいる場合はApplication.DoEvents()、死のループに固執してください。

自分がしたいって分かってるんでしょ。

すべての同僚から軽蔑を受けずにやりたい場合は、この質問と回答を参照してください。

于 2013-08-28T09:58:44.033 に答える
0

関数を使用asyncします。これらの便利なリンクを見つけました

http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx

http://msdn.microsoft.com/en-us/library/vstudio/hh156513.aspx

于 2013-08-28T09:58:13.830 に答える