如何在C#4.0中将任务转换为PageAsyncTask?

时间:2016-02-25 16:01:28

标签: asp.net .net-4.0 task-parallel-library asp.net-4.0 pageasynctask

以下内容无法编译。这适用于 4.0 aspx WebForms页面中的异步调用。

var task = Task.Factory.StartNew(() => Thread.Sleep(100));
var pat = new PageAsyncTask(task); //Doesn't compile, no such signature.
Page.RegisterAsyncTask(pat);

Google搜索失败了,因为我无法使用所有不相关的4.5素材。我的意思是,我不能使用4.5。

如果我只使用没有RegisterAsyncTask的Task,我会收到一个警告,即WebForms不支持裸任务,或者它挂起。

1 个答案:

答案 0 :(得分:1)

你快到了。不是使用任务构造PageAsyncTask,而是使用返回任务的方法构造它,如下所示:

var pat = new PageAsyncTask(() => Task.Run(() => Thread.Sleep(100)));

对于.Net 4.0:

Action a = () => Thread.Sleep(100); var p = new PageAsyncTask((s, e, cb, o) => a.BeginInvoke(cb, o), a.EndInvoke, null, null);