小编dur*_*0rz的帖子

使用另一个线程停止一个线程的工作

不确定我的标题是否措辞得当,但无论如何:)

我有两个线程:包含需要完成的工作的主线程,以及包含带有进度条和取消按钮的表单的工作线程。在正常代码中,情况正好相反,但在这种情况下我不能这样做。

当用户单击取消按钮时,会显示一条提示,询问他是否真的要取消该工作。问题是工作在主线程上继续进行。我可以让主线程停止工作等,但我希望当他在提示上单击“是”时它停止工作。

例子:

// Main thread work starts here    
    t1 = new Thread(new ThreadStart(progressForm_Start));
    t1.Start();

    // Working
    for (i = 0; i <= 10000; i++)
    {
        semaphore.WaitOne();
        if (pBar.Running)
            bgworker_ProgressChanged(i);
        semaphore.Release();
        if (pBar.IsCancelled) break; 
    }

    t1.Abort(); 
// Main thread work ends here

// Start progress bar form in another thread
void progressForm_Start()
{
    pBar.Status("Starting");
    pBar.ShowDialog();
}
Run Code Online (Sandbox Code Playgroud)

理论上我可以在 cancelWatch() 函数中包含一个提示,但随后我必须在实现此类的所有地方都这样做。

c# multithreading

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

multithreading ×1