gpt4 book ai didi

ASP.NET 异步 Controller 并调用 Sync(); "Sync()"是什么?

转载 作者:行者123 更新时间:2023-12-02 04:08:50 27 4
gpt4 key购买 nike

Using an Asynchronous Controller in ASP.NET MVC使用 BeginMethod/EndMethod 模式部分指的是 Sync() 方法。它没有链接,我无法通过谷歌搜索找到有关它的文档,因为同步是一个太常见的术语。有人可以指出我的写作方向吗?

To make sure that you have access to the HttpContext.Current instance and to avoid the race condition, you can restore HttpContext.Current by calling Sync() from the callback method.

最佳答案

当您通过从 Controller 操作中调用 BeginXyz/EndXyz 方法来生成异步操作时,处理异步响应的线程不受 ASP.NET 的控制。因此,您无法触及 HttpContext、 Controller 实例或这些线程内的任何其他共享状态。调用 Sync() 方法基本上同步对请求的访问;它恢复 HttpContext.Current 并授予您访问 HttpContext、 Controller 等的权限,但仅限于 Sync() 调用期间。 MVC Futures 的 RegisterTask() 扩展方法尝试使这变得更容易一些,因为您基本上将其委托(delegate)传递给目标 Begin 和 End 方法,并且 RegisterTask() 帮助器将确保 End 线程在适当的同步上下文中执行。

如果您通过从 Controller 操作中调用 XyzAsync/XyzCompleted 方法来生成异步操作,则不必担心这一点,因为已完成的处理程序会在同步上下文中自动运行。

关于ASP.NET 异步 Controller 并调用 Sync(); "Sync()"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3420113/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com