C#Task.Run()停止工作并永远等待

时间:2019-05-01 15:55:37

标签: c# task

我使用C#编写的服务器端应用程序,并且执行了一个简单的Task.Run,如下所示:

{
...
Task.Run(() => DeleteFile(path));
...
}

它工作了好几年,但是从昨天开始就停止工作了,根本没有调用DeleteFile方法。执行只是继续到下一行代码。我尝试了Task.Run(() => File.Delete(path)),但效果不佳。然后,我添加了Task.Wait,内容如下(有一个空操作-仅用于测试):

Task t = Task.Run(() => {});
t.Wait();

当执行到达t.Wait()时,它将永远等待并且不会转到下一行代码。

应用程序中我使用Task.Run的其他地方可以正常工作。

可能是什么原因?

1 个答案:

答案 0 :(得分:-3)

可能您有死锁。请参阅此链接https://michaelscodingspot.com/c-deadlocks-in-depth-part-1/。您需要真正知道何时调用.Wait() .Result() .Run(),这三个函数可能会使您的整个应用程序崩溃。