0

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

1 回答 1

2

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

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

谢谢!

于 2013-10-15T20:46:54.740 回答