同步方法调用返回Stream的异步方法导致流被关闭

时间:2015-08-18 18:27:58

标签: c# asynchronous async-await

我有一个sync方法,它调用一个返回Stream的异步方法。

async方法调用web api并返回表示文档的流。

每当我从同步方法中调用异步方法时,流都会以关闭状态返回。

如果我从另一个异步方法中调用异步方法,则会返回打开的流。

我无法从另一个异步方法中调用异步方法,因为我必须从外部库实现一个接口,并且调用异步方法的代码是在一个定义的同步方法中完成的在界面中。

所以 - SyncMethod - > AsyncMethod - > WebApi返回一个封闭的流

AsyncMethod1 - > AsyncMethod - > WebApi返回一个开放流。

这是我的异步方法的签名 -

public async Task<Response<Stream>> GetSomeDocument()

在我的同步方法中,我像这样调用异步方法 -

var task = this.someClass.GetSomeDocument();

task.Wait();

这是它爆炸并抛出ObjectDisposedException -

的地方
var memoryStream = new MemoryStream();

task.Result.CopyTo(memoryStream);

如果我使用await在异步方法中调用异步方法,但是从同步方法调用它并不是这样的话,那么为什么会这样呢?

感谢。

0 个答案:

没有答案