我有一个检查目录是否存在的方法。
public static bool FileExists(string path, int timeout = 500)
{
Func<bool> func = () => File.Exists(path);
using (Task<bool> task = new Task<bool>(func))
{
task.Start();
return task.Wait(timeout) && task.Result;
}
}
它工作正常,但是当我关闭wpf应用程序时,有时我会遇到以下异常:
仅当任务处于完成状态(RanToComplete、出错或已取消(时,才能释放该任务
任何提示如何检测异常?我试图将我的代码包装到 try...抓住块,但我认为还有更多优雅的解决方案,
Wait
方法接受CancellationToken
存在重载。如果您使用此功能,则可以按照文档中的说明使用CancellationTokenSource
取消它。
不过,您实际上并不需要处理该任务:
public static bool FileExists(string path, int timeout = 500)
{
Func<bool> func = () => File.Exists(path);
Task<bool> task = Task.Run(func);
return task.Wait(timeout) && task.Result;
}
Stephan Toub在他的博客文章中对此进行了更多解释:
我需要处置任务吗?