2015-08-19 75 views
0

我有一個文本框,我想不斷保存到磁盤,每次更新。我已將數據綁定到其內容,並且計劃在屬性的setter中添加代碼以保存更改。我熟悉Textbox UpdateSourceTrigger屬性。UWP/WinRT:是否保證以創建的順序完成多個異步任務?

每次保存電話都會撥打WriteTextAsync。如果每次有人輸入文本框時都會保存文本框,這可能會產生大量的異步保存調用。我的一個簡單問題是,異步寫入調用是否保證不會相互衝突,並按照創建異步任務的順序執行?

我已閱讀了有關通用Windows平臺的異步編程的guides,我找不到明確說明這一點的任何內容。

回答

4

你不會找到任何明確說明這一點的東西。這只是多線程開發的本質。

this could be generating a ton of asynchronous save calls 

您的常識是正確的。可能出現的問題: 保存可能會不按順序完成。
如果每次關閉並打開文件,Saves可能會相互衝突導致訪問異常。

My simple question is, are the asynchronous write calls guaranteed to not collide and to execute in the order in which their asynchronous tasks were created? 

沒有。他們保證在某個時刻發生碰撞,並且在某些時候保證按照你開始他們的時間順序完成執行。有限的測試可能表明它沒問題,但是你會冒上述問題的風險,並且會很糟糕實踐。

您可以創建一個跟蹤更改的管理器。經理會將所有請求的更改放入隊列中,並且Manager是更新文本文件的唯一線程。