War*_*ker 0 c# asynchronous stream async-await
我正在尝试将stream-parameter传递给异步方法,如下所示:
async void MyAsyncMethod(Stream s, int i)
{
await Task.Factory.StartNew(() =>
{
SomeMethodReadingFromStream(s, i); // throws ArgumentException, "Stream was not readable."
});
}
Run Code Online (Sandbox Code Playgroud)
当我使MyAsyncMethod不使用async-await时,一切正常.
有没有办法在异步方法中使用流?
调用方法可能如下所示:
using(var stream = ...)
{
MyAsyncMethod(stream, 3);
}
Run Code Online (Sandbox Code Playgroud)
由于您正在开始关闭MyAsyncMethod然后关闭流,因此在MyAsyncMethod运行时,流将被关闭.
解决此问题的一种方法是更改MyAsyncMethod签名以返回任务,然后等待它.
async Task MyAsyncMethod(Stream s, int i) { ... }
using(var stream = ...)
{
await MyAsyncMethod(stream, 3);
}
Run Code Online (Sandbox Code Playgroud)
这样,直到MyAsyncMethod完成才会关闭流.
| 归档时间: |
|
| 查看次数: |
941 次 |
| 最近记录: |