簡體   English   中英

編寫和讀取文件異步

[英]Writing and Reading file async

我想將一些內容寫入本地文件,然后將其表示在文本塊中。 我有兩個方法,CreateFile和Output,第一個方法使用WriteTextAsync方法將內容寫入文件,第二個方法使用ReadTextAsync方法讀取內容。 我一個接一個地調用這兩個方法,比如

CreateFile(data);
Output(file);

file是一個全局變量,CreateFile方法會將“data”寫入文件,而Output方法輸出它的內容。 不幸的是,它並不總是有效,有時,我得到異常,說“對象引用未設置為對象”,經過研究,我發現有時候,文件為null,我認為它可能是由Output方法執行的,但是文件創造沒有完成。 因此,如果我添加一個斷點,它總是有效。 任何人都可以幫我在文件創建完成后如何讓Output方法執行?

謝謝

其中一個原因可能是文件尚未創建 ,當第二個方法嘗試讀取它時:

圖1

所以,第二種方法必須等待第一種方法完成

圖2

有幾種方法可以實現這一目標。

其中一個將使用任務並行庫中的 任務類及其等待方法

var task = new Task(() => CreateFile(data));
task.Wait();

另一個,例如, ManualResetEvent類

ManualResetEvent允許線程通過信令相互通信。 通常,此通信涉及一個線程必須在其他線程可以繼續之前完成的任務。

其他一些相關鏈接:

由於您的方法調用異步方法,一個簡單的解決方法是調用您的方法,如下所示:

await CreateFile(data);   // This waits for the method to complete before continuing.  
Output(file);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM