C# 异步写入和读取文件
我想将一些内容写入本地文件,然后在文本块中表示它。我有两种方法,CreateFile和Output,第一种方法使用WriteTextAsync方法将内容写入文件,第二种方法使用ReadTextAsync方法读取内容。我一个接一个地调用了这两种方法C# 异步写入和读取文件,c#,asynchronous,windows-8,.net-4.5,C#,Asynchronous,Windows 8,.net 4.5,我想将一些内容写入本地文件,然后在文本块中表示它。我有两种方法,CreateFile和Output,第一种方法使用WriteTextAsync方法将内容写入文件,第二种方法使用ReadTextAsync方法读取内容。我一个接一个地调用了这两种方法 CreateFile(data); Output(file); file是一个全局变量,CreateFile方法将“数据”写入文件,Output方法将其内容输出。 不幸的是,它并不总是有效的,有时,我会遇到异常,说“对象引用未设置为对象”,经过研究,
CreateFile(data);
Output(file);
file是一个全局变量,CreateFile方法将“数据”写入文件,Output方法将其内容输出。
不幸的是,它并不总是有效的,有时,我会遇到异常,说“对象引用未设置为对象”,经过研究,我发现有时,文件是空的,我认为这可能是由于执行了输出方法,但文件创建没有完成。因此,如果我添加一个断点,它总是有效的。任何人都可以帮助我如何让输出方法在文件创建完成后执行
感谢原因之一可能是当第二种方法尝试读取文件时,文件尚未创建: 因此,第二种方法必须等待第一种方法完成: 有几种方法可以实现这一点 其中之一将使用from及其: 另一个例子是: ManualResetEvent允许线程通过信令相互通信。通常,此通信涉及一个任务,其中一个线程必须在其他线程继续之前完成该任务 其他一些相关链接:
- 一篇关于C#中多线程的优秀文章:
await CreateFile(data); // This waits for the method to complete before continuing.
Output(file);
@MatthewRz:windows-8的
tag意味着C#5.0。@James感谢James,很高兴听到它的帮助。
await CreateFile(data); // This waits for the method to complete before continuing.
Output(file);