4

2 ~ 4 台の異なるサーバーで時間のかかるタスクを実行する必要があります。

サーバーの数はさまざまです。

各マシンでほぼ同時に同じタスクを実行する必要があります。そうしないと、このプロセスにかかる時間が 4 倍になります。

これまでのところ、私はこれを思い付くことができました:

public partial class Form_main : Form
{
    list<string> vms = new list<string>;
    ///Fill in vms...
    private void startTest()
    {
        ///prevents GUI from hanging
        ThreadPool.QueueUserWorkItem(new WaitCallback(runTests));
    }
    pirvate void runTests()
    {
        ///Some setup stuff (~1 min)
        foreach(string vm in vms)
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback(testProcedure), new object[] {vm});
        }
    }
}

これはすべてを一度に実行するのに有効ですが、問題は、GUI が強制終了された場合にスレッドが一緒に強制終了されないことです。runTests スレッドを強制終了しているが、testProcedures スレッドを強制終了していないと思います。

GUI の終了時に testProcedures スレッドが強制終了されるようにするにはどうすればよいですか?

4

1 に答える 1

1

メイン フォームのOnFormClosedハンドラでEnvironment.Exitメソッドを呼び出すことができます。

于 2013-10-22T19:48:22.360 に答える