別のスレッドで関数を実行する非同期ページをasp.netに書き込もうとしています。次のコードの問題は、デバッグすると、関数EndAsyncOperationが呼び出されないことです。その結果、ページが完全に読み込まれず、永久に読み込まれます。アクションを使用して、スレッドプールとは別のスレッドでコードを実行します。動作する別のスレッドでコードを実行する別の方法はありますか?
どこが間違っているのですか?
そして別の質問。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
}
}