C # Task.Run () перестал работать и ждет вечно - PullRequest
0 голосов
/ 01 мая 2019

Я работаю с серверным приложением, написанным на 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 голосов
/ 01 мая 2019

Возможно, у вас есть Dead-Lock. Смотрите эту ссылку https://michaelscodingspot.com/c-deadlocks-in-depth-part-1/. Вы должны действительно знать, когда позвонить .Wait() .Result() .Run(), эти три могут привести к краху всего вашего приложения.

...