[英]Writing and Reading file async
我想將一些內容寫入本地文件,然后將其表示在文本塊中。 我有兩個方法,CreateFile和Output,第一個方法使用WriteTextAsync方法將內容寫入文件,第二個方法使用ReadTextAsync方法讀取內容。 我一個接一個地調用這兩個方法,比如
CreateFile(data);
Output(file);
file是一個全局變量,CreateFile方法會將“data”寫入文件,而Output方法輸出它的內容。 不幸的是,它並不總是有效,有時,我得到異常,說“對象引用未設置為對象”,經過研究,我發現有時候,文件為null,我認為它可能是由Output方法執行的,但是文件創造沒有完成。 因此,如果我添加一個斷點,它總是有效。 任何人都可以幫我在文件創建完成后如何讓Output方法執行?
謝謝
其中一個原因可能是文件尚未創建 ,當第二個方法嘗試讀取它時:
所以,第二種方法必須等待第一種方法完成 :
有幾種方法可以實現這一目標。
var task = new Task(() => CreateFile(data));
task.Wait();
另一個,例如, ManualResetEvent類 :
ManualResetEvent允許線程通過信令相互通信。 通常,此通信涉及一個線程必須在其他線程可以繼續之前完成的任務。
其他一些相關鏈接:
關於Joseph Albahari網站上關於C#多線程的一篇很棒的文章: http : //www.albahari.com/threading/
由於您的方法調用異步方法,一個簡單的解決方法是調用您的方法,如下所示:
await CreateFile(data); // This waits for the method to complete before continuing.
Output(file);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.