如何管理IsCompleted值

本文关键字:IsCompleted 管理 何管理 | 更新日期: 2023-09-27 18:09:45

我这样删除文件。并且需要知道何时完成了UI的更新(ListBox中的文件列表)。

我不知道我该怎么做……我能用fi.DeleteAsync().IsCompleted值来表示吗?

FileInfo fi = new FileInfo(currentPackage.FullPathFileName);          
fi.DeleteAsync().Wait();          
// Here I need some code to check when it is done. Any clues?
...
public static class FileExtensions
{
  public static Task DeleteAsync(this FileInfo fi)
  {
     return Task.Factory.StartNew(() => fi.Delete());
  }
}

如何管理IsCompleted值

不要调用Wait,而应该使用延续符:

fi.DeleteAsync().ContinueWith(t => { /* update ui here */ }, TaskScheduler.FromCurrentSynchronizationContext());

使用TaskScheduler.FromCurrentSyncronizationContext()确保延续在UI线程上运行。

删除后的fi.DeleteAsync().Wait();

你可以检查这个文件是否不存在if(!fi.exists)然后更新你的UI