我在一个线程中有一个长时间运行的任务。我
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/