ato*_*erz 12 c# asp.net webforms async-await
当我遇到这个时,我在ASP.NET中做了一些编码:
protected async void someButtonClickHandler(...)
{
if(await blah)
doSomething();
else
doSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)
在提出这个问题后,我对如何async
/ await
工作有了更好的理解.但是,让我感到震惊的是,以上述方式使用async
/ 是否安全await
?
我的意思是在调用后调用await blah
者继续执行.这意味着它可能会在await blah
完成之前将响应呈现给客户端.这是正确的吗?如果是这种情况发生在doSomething()
/ doSomethingElse()
.他们会被处决吗?如果它们被执行了,用户是否会看到其更改的效果?
在我的情况下,这些方法会改变显示给用户的一些数据,但我也想知道在一般情况下会发生什么.
Ste*_*ary 21
是的,它是安全的,但不是真的推荐.在推荐的方法做,这是通过RegisterAsyncTask
.但是,ASP.NET(Web窗体)将正确处理async void
事件处理程序.
当处理程序await
s 时,响应不会呈现给客户端; await
ASP.NET运行时的唯一产量,而不是客户端.ASP.NET运行时知道事件处理程序尚未完成,因此它知道不发送响应.当事件处理程序完成时,ASP.NET运行时通过发送响应来响应.
我有一篇关于异步ASP.NET的MSDN文章,你可能会发现它很有帮助.如果您对ASP.NET运行时如何知道async
处理程序尚未完成感到好奇,我将在之前的MSDN文章中介绍它.
归档时间: |
|
查看次数: |
2934 次 |
最近记录: |