c# - 继续返回任务的方法

标签 c# task-parallel-library

我想执行三个步骤的工作。一个准备任务,一个封装在返回任务的方法中的工作任务,以及一个需要上一步结果的清理任务。但是我不确定我是否通过解包和访问“Result”属性以正确的方式做到了这一点,或者是否有更清晰的版本将方法包含在执行链中。

static void Main(string[] args)
{
    Task.Factory.StartNew(() => Console.WriteLine("Prepare"))
                .ContinueWith(x => Work())
                .ContinueWith(x => Console.WriteLine(x.Unwrap().Result));
    Console.ReadLine();
}

private static Task<string> Work()
{
    Thread.Sleep(1500);
    return Task.Factory.StartNew(() => "See my results...");
}

最佳答案

您可以简单地使用一个异步方法来执行所有步骤并返回一个任务:

static async Task DoAsync()
{
    Console.WriteLine("Prepare");
    Console.WriteLine(await WorkAsync());
}

static void Main(string[] args)
{
    DoAsync().Wait();
    Console.ReadLine();
}

关于c# - 继续返回任务的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26121151/

相关文章:

c# - 如何从 Windows 应用程序 C# 发布 word 文件

c# - List.Foreach() 提示无法从 'void' 转换为 'object'

c# - Asp.Net Ajax WebService 和内部错误 500

f# - 异步计算无法捕获 OperationCanceledException

c# - 为什么先执行return语句而不是Parallel.ForEach?

c# - 一起使用任务和线程池可以吗?

c# - 读取C#中VB6二进制访问写入的文件

c# - 在 Entity Framework 中使用计算的 DateTime 列

c# - C# 中的 Task<T> 和 TaskContinuationOptions 说明?

c# - Parallel.ForEach 中的异常堆栈跟踪和聚合