我的一部分流程有時會拉鍊文件,而我試圖使該流程異步。我對此很新穎。使用Task.Run()異步壓縮會阻止UI。我錯過了什麼?
我以前用過「await Task.Run((=)DoSomething())」,並沒有遇到任何問題。出於某種原因,當我的程序達到等待Task.Run()時,它會無限期地掛起。
有人會讓我知道我錯過了什麼嗎?提前致謝。
public static async Task<BackupResultHelper> BackupAndZip(List<MyBackupItem> itemList, FileInfo targetFi) {
DirectoryInfo zipSourceDi = new DirectoryInfo(targetFi.Directory + "\\Temp");
if (targetFi.Exists)
targetFi.Delete();
if (!Directory.Exists(zipSourceDi.FullName))
Directory.CreateDirectory(zipSourceDi.FullName);
foreach (MyBackupItem item in itemList) {
DirectoryInfo dir = new DirectoryInfo(zipSourceDi.FullName + "\\" + item.Name);
if (!BackupItem(item, dir.FullName)) return ErrorResultHelper;
}
await Task.Run(() => ZipFile.CreateFromDirectory(zipSourceDi.FullName, targetFi.FullName, CompressionLevel.Optimal, false));
Directory.Delete(zipSourceDi.FullName, true);
string time = DateTime.Now.ToLongTimeString();
return new BackupResultHelper(){Success = true, Message = "Backup complete!", BackupDateTime = time};
}
你有沒有用異步事件處理函數調用這個函數? –
@Thomas不,我沒有。在我對斯蒂芬的迴應中,我將主旨與調用方法聯繫起來。 – CubemonkeyNYC