我有一个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;
}
}
答案 0 :(得分:2)
我误解了这是关于什么的。我刚刚为该任务创建了一个新线程,因为该任务的主要目的是将记录插入到数据库中,并且我的页面上有一个gridview,使用ajax读取数据库,显示进度。因此,当线程正常工作时,您可以看到记录计数上升。
Thread myThread = new Thread(new ParameterizedThreadStart(task.Run));
myThread.Start(extra);
谢谢!