gpt4 book ai didi

c# - ASP.NET 真正的异步操作

转载 作者:行者123 更新时间:2023-11-30 16:27:42 28 4
gpt4 key购买 nike

我正在尝试从一个 ASP.NET 页面发出多个 HTTP 请求。页面本身不需要知道响应,无论如何都应该继续处理和传送页面。

我尝试将 HTTP 代码放入 BackgroundWorker 并异步运行它,但我最初遇到以下错误;

Asynchronous operations are not allowed in this context. Page starting an asynchronous operation has to have the Async attribute set to true and an asynchronous operation can only be started on a page prior to PreRenderComplete event.

所以我照我说的做了,并为该页面赋予了 Async 属性。然后我做了一些研究,发现我的 BackgroundWorker 实际上并没有像我预期的那样执行异步操作。一些背景阅读 ( http://www.pluralsight-training.net/community/blogs/mike/archive/2005/11/04/16213.aspx ) 告诉我;

PreRender and PreRenderComplete events [do] not resume until all of the timeout event handlers for all of the registered async tasks have been invoked and return.

如何确保我的 BackgroundWorker 不会暂停页面的处理?

最佳答案

要查看的另一个选项是 ThreadPool.QueueUserWorkitem()。它会异步触发一些东西。它还将使用 asp.net 线程池中的线程。

我通常在服务器上使用 threadPool,在 gui/winforms 中使用 BackGroundWorker。这并不是说它不能完成。

如果您受困于 BackgroundWorker,至少可以尝试其他方法...

这是其他一些 SO 帖子:

ThreadPool.QueueUserWorkItem uses ASP.Net

ThreadPool.QueueUserWorkItem with a lambda expression and anonymous method

ThreadPool.QueueUserWorkItem with function argument

关于c# - ASP.NET 真正的异步操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7647198/

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