1
我想用StreamReader在Windows 8 C#文件中逐行讀取一個簡單的文本文件。我嘗試了很多解決方案,但沒有成功。有時文件被讀取,有時不是(類是空的,只有空值)。如果程序正在運行,它永遠不會工作,但是當我設置一個調試器並使用它逐行執行時,它有時會起作用。這是爲什麼?這就是源:用StreamReader逐行讀取文件
public async void read(string fileName)
{
string File = Path.Combine(Package.Current.InstalledLocation.Path, "myfolder", fileName);
StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(Path.GetDirectoryName(File));
Stream s = await folder.OpenStreamForReadAsync(Path.GetFileName(File));
StreamReader streamReader = new StreamReader(s);
myClass.name = streamReader.ReadLine();
myClass.desc = streamReader.ReadLine();
myClass.number = int.Parse(streamReader.ReadLine());
myClass.house = new House[myClass.number];
for (int i = 0; i < myClass.number; i++)
{
myClass.house[i] = new House();
myClass.house[i].name = streamReader.ReadLine();
myClass.house[i].size = double.Parse(streamReader.ReadLine());
}
}
我嘗試過,但我想調用方法時整頁面被初始化,但是當我在頁面構造器中寫入「await read(」filetoRead.txt「)」時,它表示'await'操作符只能在異步方法中使用,但是從我所知的構造函數不能異步。我是對的還是我錯過了什麼? – user2202439 2013-03-23 19:50:11
@ user2202439 - 關於異步構造函數:看看這個http://stackoverflow.com/questions/14449349/winrt-async-data-load-in-constructor – 2013-03-23 22:45:29
謝謝你的幫助。我多次閱讀斯蒂芬的博客,但我仍然無法正確寫出它。我有私人'異步任務 InitializeAsync()',在那裏我只用StreamReader讀取數據,並重試這個和'公共靜態異步任務 CreateAsync()'我在那裏調用InitializeAsync await。我使用'public static async Task'來調用這些方法。任務UseMyClassAsync() {instance} await MyClass.CreateAsync();並且它仍然有問題。我究竟做錯了什麼?你能舉個例子嗎? –
user2202439
2013-03-24 11:32:08