c# - 关闭 GUI 时终止线程

标签 c# multithreading

我需要在两到四台不同的服务器上执行一项时间密集型任务。

服务器的数量可能会有所不同。

我需要在大致相同的时间在每台机器上执行相同的任务,否则它会使该过程花费的时间翻两番。

到目前为止,我已经能够想出这个:

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/

相关文章:

c - 逻辑检查未按预期输出。 (数独检查器)C

c# - 将 GridView 转换为图像

c# - XNA - 进程在调试时意外终止

c# - 将字符串数组从 C++ 传递到 C#

c++ - 我是否以线程安全的方式使用这个双端队列?

c# - 在 C# 中实现进度条

linux - pthread_kill() 没有向主线程发送信号(主程序)

java - 褪色算法不起作用?

c# - 在 C# 中重命名文件

c# - 如何将sql查询结果制作成xml文件