从队列用户工作项移动到任务

本文关键字:移动 任务 工作 队列 用户 | 更新日期: 2023-09-27 18:36:20

.NET 4.5 和 VS2012 是我的目标

在我的 C# 中,我有很多这样的旧代码:

var stuff;
ThreadPool.QueueUserWorkItem(() =>
    {
          stuff=GetStuff():
           InvokeOnMainThread(stuff);
    });

如何使用 C# 中的新任务系统完成此操作?

从队列用户工作项移动到任务

这通常映射到:

Task.Factory.StartNew(() =>
{
     return GetStuff():                  
}).ContinueWith(t =>
{
    // InvokeOnMainThread(t.Result); // Note that this doesn't need to "Invoke" now
    UseStuff(t.Result); 
}, TaskScheduler.FromCurrentSynchronizationContext()); // Moves to main thread

如果您使用的是 Visual Studio 2012 和 .NET 4.5,您还可以选择将该方法标记为async,然后执行以下操作:

var stuff = await Task.Run(() => GetStuff());
UseStuff(stuff); // Will be on the main thread here...