2014-12-07 59 views
0

我有一個插入數據庫異步的函數。 ,該功能是在後臺傳輸狀態調用改變,有時它造成的僵局如何防止在windows phone中保存數據導致死鎖?

await vm.InsertVerseDownloadProgress_Bulk(tracks.Cast<QuranVerseTrack>().ToList()).ConfigureAwait(true); 

    await vm.InsertVerseDownloadProgress_Bulk(tracks.Cast<QuranVerseTrack>().ToList()).ConfigureAwait(false); 

    await vm.InsertVerseDownloadProgress_Bulk(tracks.Cast<QuranVerseTrack>().ToList()).ConfigureAwait(true); 

我不知道要使用哪一個

回答

0

ConfigureAwait(真)是默認設置,使你的任務編組回它開始的線程。

死鎖主要是由於等待UI結果中某處的結果(等待,不等待;通過調用task.wait或task.result)造成的。

您的問題不能沒有進一步的背景下回答。

+0

所以如果我使用它就像「vm.InsertVerseDownloadProgress_Bulk(tracks.Cast ()。ToList())」它不應該導致一個問題 – 2014-12-07 11:48:58

+0

「它取決於」。 :) 如果您想在等待該代碼後更改用戶界面中的某些內容,則表示您沒有問題。 如果你不這樣做,你可以使用ConfigureAwait來防止無用的ThreadMarshalling。 我只能說在這一點上,這個配置等待不是唯一的東西有關你的標誌,你需要提供更多的上下文。 – 2014-12-07 12:48:20