asp.net PageAsyncTask不是异步运行的

时间:2013-10-15 19:52:18

标签: c# asp.net pageasynctask

我有一个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;
    }
}

1 个答案:

答案 0 :(得分:2)

我误解了这是关于什么的。我刚刚为该任务创建了一个新线程,因为该任务的主要目的是将记录插入到数据库中,并且我的页面上有一个gridview,使用ajax读取数据库,显示进度。因此,当线程正常工作时,您可以看到记录计数上升。

Thread myThread = new Thread(new ParameterizedThreadStart(task.Run));
myThread.Start(extra);

谢谢!