我正在尝试在 asp .net 中编写一个异步页面,该页面在不同的线程中运行一个函数。以下代码中的问题是,当我调试它时,函数 EndAsyncOperation 永远不会被调用。结果,页面没有完全加载并且永远加载。我使用 Action 在与线程池不同的线程中运行代码。是否有另一种方法可以在另一个有效的线程中运行代码?
我哪里错了?
还有一个问题。我在 ASP .Net 中读到,页面是使用线程池运行的。那么,当我调试我的网站并尝试同时加载几个页面时,它们是如何同步加载的呢?
public partial class AsyncPage : System.Web.UI.Page
{
void Page_Load(object sender, EventArgs e)
{
AddOnPreRenderCompleteAsync(
new BeginEventHandler(BeginAsyncOperation),
new EndEventHandler(EndAsyncOperation)
);
}
IAsyncResult BeginAsyncOperation(object sender, EventArgs e,
AsyncCallback cb, object state)
{
Action action = () =>
{
Start();
};
IAsyncResult asyncResult = action.BeginInvoke(new AsyncCallback(action.EndInvoke), null);
return asyncResult;
}
void EndAsyncOperation(IAsyncResult ar)
{
// This function isn't reached
}
public void Start()
{
// Do something
}
}