Mik*_*rry 4 .net c# async-await
我爱上异步并等待,但是我无法弄清楚如何在不使用Task.Run的情况下等待文件打开.在WRT中似乎有一个API..NET 4.5等价于哪里?我问,因为如果我在远程计算机上访问UNC共享,如果计算机出现故障或由于某种原因没有响应网络请求,则可能会长时间阻塞.这似乎是一个如此大的网站.
using (FileStream stream = await Task.Run(() => new FileStream(@"c:\temp\text.txt", FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read, 4096, true)))
{
byte[] bytesToRead = new byte[stream.Length];
await stream.ReadAsync(bytesToRead, 0, bytesToRead.Length).ConfigureAwait(false);
return bytesToRead;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,即使文件打开在设备驱动程序级别是异步的,也没有用于打开异步文件的Win32 API.这就是为什么没有.NET等价物的原因; 我不确定,但我怀疑WinRT API是通过将它排队到线程池来伪造异步操作.
因此,最佳解决方案是执行类似的解决方法:使用Task.Run.不过,我会把所有FileStream代码都包装好Task.Run.
| 归档时间: |
|
| 查看次数: |
603 次 |
| 最近记录: |