我有一个 PageAsyncTask 需要大约 2 分钟才能运行。我的页面指令有 Async="true",我的配置有 180 的超时时间(3 分钟给额外的时间),但是当我调用 Page.ExecuteRegisteredAsyncTasks() 时它不会立即返回并且在运行时阻塞任务。
我错过了让它异步运行的任何步骤吗?
(这个格式更好,但编辑后它搞砸了)
// in my button click event
MyTask task = new MyTask();
PageAsyncTask asyncTask = new PageAsyncTask(task.OnBegin, task.OnEnd, task.OnTimeout);
Page.RegisterAsyncTask(asyncTask);
Page.ExecuteRegisteredAsyncTasks();
// MyTask.cs
public class MyTask
{
protected delegate void AsyncTaskDelegate();
private AsyncTaskDelegate dlgt;
public void Run() { // my code that hits DB }
public IAsyncResult OnBegin(object sender, EventArgs e, AsyncCallback cb, object extra)
{
dlgt = new AsyncTaskDelegate();
IAsyncResult result = dlgt.BeginInvoke(extra, cb, null);
return result;
}
}