问题是既然你的lambda是
Action<Task>
,ContinueWith返回
Task
fetchTask
,类型为
Task<List<NewsItem>>
ContinueWith
调用变量,而不是
new Task<>
如果你这样做:
var fetchTask =
new Task<List<NewsItem>>(() =>
{
List<NewsItem> items = Rss.FetchNewsItems(feed);
return items;
})
.ContinueWith<List<NewsItem>>(
x => UpdateNewsItems(x.Result),
CancellationToken.None,
TaskContinuationOptions.None,scheduler);
您会注意到有一个问题,因为您的lambda返回void,但是任务期望返回
List<NewsItem>
. 因此,您可能希望从UpdateNewsItems返回该值,或者创建任务并在稍后添加continuation。