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;
}
}
我误解了这是关于什么的。我只是为任务制作了一个新线程,因为任务的要点是将记录插入数据库,我的页面上有一个网格视图,使用 ajax 读取数据库,显示进度。因此,当线程工作时,您可以看到记录计数增加。
Thread myThread = new Thread(new ParameterizedThreadStart(task.Run));
myThread.Start(extra);
谢谢!