gpt4 book ai didi

c# - 是否有等同于 : Storagefile. Openasync 的 .NET 4.5

转载 作者:太空狗 更新时间:2023-10-30 00:40:39 26 4
gpt4 key购买 nike

我爱上了 async 和 await,但是我不知道如何在不使用 Task.Run 的情况下等待文件打开。似乎有一个 API in WRT . .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;
}

最佳答案

不幸的是,即使文件打开在设备驱动程序级别是异步的,也没有用于异步文件打开的 Win32 API。所以这就是为什么没有 .NET 等价物的原因;我不确定,但我怀疑 WinRT API 通过将异步操作排队到线程池来伪造异步操作。

因此,最好的解决方案是采用类似的解决方法:使用 Task.Run。不过,我会将所有 FileStream 代码包装在 Task.Run 中。

关于c# - 是否有等同于 : Storagefile. Openasync 的 .NET 4.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25513880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com