我使用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的其他地方可以正常工作。
可能是什么原因?
答案 0 :(得分:-3)
可能您有死锁。请参阅此链接https://michaelscodingspot.com/c-deadlocks-in-depth-part-1/。您需要真正知道何时调用.Wait() .Result() .Run()
,这三个函数可能会使您的整个应用程序崩溃。