如何修改此方法以異步調用它?異步創建文件
private void Write(string fileName, data)
{
File.WriteAllText(fileName, data);
}
如何修改此方法以異步調用它?異步創建文件
private void Write(string fileName, data)
{
File.WriteAllText(fileName, data);
}
查找到FileStream.WriteAsync
(請注意,您必須使用適當的過載,這需要bool
指示是否應該異步:)
public async Task WriteAsync(string data)
{
var buffer = Encoding.ASCII.GetBytes(data);
using (var fs = new FileStream(@"File", FileMode.OpenOrCreate,
FileAccess.Write, FileShare.None, buffer.Length, true))
{
await fs.WriteAsync(buffer, 0, buffer.Length);
}
}
如果你想使用運行編輯
您string data
和避免轉換到byte[]
,您可以使用更多抽象和更不詳細的StreamWriter.WriteAsync
超載,它接受一個字符串:
public async Task WriteAsync(string data)
{
using (var sw = new StreamWriter(@"FileLocation"))
{
await sw.WriteAsync(data);
}
}
可以調用方法Task
裏面,像這樣:
Task.Factory.StartNew(() => File.WriteAllText("test.txt","text"));
有許多方法來啓動一個任務,這只是其中的一個,你的閱讀更多here。
您不需要使用線程池線程來發出IO綁定請求。這不會使呼叫真正異步 – 2014-08-27 07:50:10
這不如Yuval的答案。 – 2014-08-27 08:35:28
'StreamWriter.WriteAsync'或'FileStream.WriteAsync' – 2014-08-27 07:35:13
http://msdn.microsoft.com/en-us/library/jj155757.aspx – IVAAAN123 2014-08-27 07:35:14