Console.WriteLine("有个人去4s店买车");

var tokenSource = new CancellationTokenSource();

// 下单买车,但是不确定要多久才能提车
var task1 = DoSomething(tokenSource.Token);

// 这个人的耐心只有五秒钟
var task2 = Task.Delay(5000);

// 提车和耐心上限的某一个成功了。
var res = await Task.WhenAny(task1, task2);

// 等了5秒,判断结果到底是提车还是等不下去
if (res != task1)
{
    // 等不下去了的话,就退钱
    tokenSource.Cancel();
    Console.WriteLine($"太慢了,等不下去了。RNM退钱。{DateTime.Now:HH:mm:ss fff}");
}

Console.WriteLine("程序结束运行");

static async Task DoSomething(CancellationToken token)
{
    Console.WriteLine($"这个人他下单了,然后开始等待:{DateTime.Now:HH:mm:ss fff}");
    // 内部用时多久是不确定的,假设订车十分钟后才能提车
    await Task.Delay(600000, token);
    Console.WriteLine($"这个人他拿到车了:{DateTime.Now:HH:mm:ss fff}");
}

https://www.bilibili.com/video/BV1SS4y1o7bm/

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-06-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-02
  • 2021-10-26
相关资源
相似解决方案