我需要在两到四台不同的服务器上执行一项时间密集型任务。
服务器的数量可能会有所不同。
我需要在大致相同的时间在每台机器上执行相同的任务,否则它会使该过程花费的时间翻两番。
到目前为止,我已经能够想出这个:
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 线程。
我怎样才能使 testProcedures 线程在 GUI 关闭时被杀死?
最佳答案
您可以调用Environment.Exit OnFormClosed 中的方法主窗体的处理程序。
关于c# - 关闭 GUI 时终止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19526920/