asp.net 页面异步任务未异步运行

本文关键字:异步 任务 运行 net asp | 更新日期: 2023-09-27 18:35:34

我有一个PageAsyncTask,运行大约需要2分钟。我的页面指令有 Async="true",我的配置的超时为 180(3 分钟以提供额外的时间),但是当我调用 Page.ExecuteRegisterAsyncTasks() 时,它不会立即返回并在运行任务时阻塞。

我是否缺少任何步骤来使其异步运行?

(这格式更好,但编辑后把它搞砸了)

// 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;
    }
}

asp.net 页面异步任务未异步运行

我误解了这是关于什么的。我只是为任务制作了一个新线程,因为任务的要点是将记录插入数据库,我的页面上有一个网格视图,使用 ajax 读取数据库,显示进度。因此,当线程工作时,您可以看到记录计数增加。

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

谢谢!