c# - 立即停止线程

标签 c# multithreading

我在一个线程中有一个长时间运行的任务。我

Thread a = new Thread(new ThreadStart()({ delegate()
{
   Catalog.Generate(); //long running task
}));
a.Start();

Thread b = new Thread(new ThreadStart()({ delegate()
{
   if( File.Exists(stopFile) )
   {
       a.Abort();
    }
}));
b.Start();

这会在创建停止文件时停止线程 A 但 catalog.generate 方法仍然继续运行?我该如何结束它?

最佳答案

问题是您的线程 b 开始工作并进行检查并立即退出。

您必须为线程 b 添加某种循环才能继续运行(这是示例代码,不是最佳实践):

Thread b = new Thread(new ThreadStart()({ delegate()
{
   int t=0;
   while(i<100)
   { 

       if( File.Exists(stopFile) )
       {
           a.Abort();

        }
        else
        {
           i++;
           Thread.Sleep(500);
        }
    }

}));

关于c# - 立即停止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6585741/

相关文章:

multithreading - 多个请求访问同一个 web 方法

java - 这个函数是原子函数吗?

java - 我可以使用线程来解析信息并协调数据库插入吗?

c# - 当 ShowToday 为 False 时,MonthCalendar 控件有额外边框

c# - 使用 Hangfire 和 Asp.Net Core 的重复作业

c# - ASP.NET MVC SelectList 扩展方法不选择列表项

c# - 为什么我每次调用 web 方法时都会调用我的 WebService 构造函数?

java - Thread.sleep 行为异常

java - 对 ArrayList 起作用的两种方法的同步

c# - 如何禁用 FlowLayoutPanel 中的水平滚动条?