swi*_*tor 96 c# asynchronous using-statement
我有一种情况,我正在async调用返回和IDisposable实例的方法.例如:
HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com"));
Run Code Online (Sandbox Code Playgroud)
现在async,在使用IDisposable实例之前,使用"response"变量的调用和代码将包含在using语句中.
我的问题是,当async混合中抛出关键字时,这仍然是正确的方法吗?即使代码编译,using语句是否仍然可以在下面的示例中按预期工作?
例1
using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com")))
{
// Do something with the response
return true;
}
Run Code Online (Sandbox Code Playgroud)
例2
using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com")))
{
await this.responseLogger.LogResponseAsync(response);
return true;
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 94
是的,那应该没问题.
在第一种情况下,你真的说:
在第二种情况下,你说:
一个using在异步方法声明为"奇",该Dispose呼叫可以在不同的线程来收购了该资源的一个执行(取决于同步环境等),但它仍然会发生......假设你在等待的东西不断显示出来或失败,当然.(就像Dispose你的using语句包含对永不返回的方法的调用一样,你不会最终调用非异步代码.)
| 归档时间: |
|
| 查看次数: |
14921 次 |
| 最近记录: |