【发布时间】:2014-03-13 15:51:01
【问题描述】:
我正在尝试将流参数传递给异步方法,如下所示:
async void MyAsyncMethod(Stream s, int i)
{
await Task.Factory.StartNew(() =>
{
SomeMethodReadingFromStream(s, i); // throws ArgumentException, "Stream was not readable."
});
}
当我让 MyAsyncMethod 不使用 async-await 时,一切正常。
有没有办法在异步方法中使用流?
【问题讨论】:
-
1) 不要使用
async void -
流可能在您的异步代码运行之前已关闭。
-
我相信你是在方法之外处理流。如果是,请不要这样做。
-
不要将
Task.Factory.StartNew与async-await一起使用。如果确实需要,请改用Task.Run。
标签: c# asynchronous stream async-await