C# 异步转同步 TaskCompletionSource

2021/8/27 11:06:13

本文主要是介绍C# 异步转同步 TaskCompletionSource,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

本文通过taskcompletionsource,实现异步转同步

首先有一个异步方法,如下异步任务延时2秒后,返回一个结果

private static async task<string> testwithresultasync()
{
debug.writeline("1. 异步任务start……");
await task.delay(2000);
debug.writeline("2. 异步任务end……");
return "2秒以后";
}

  

如何使用taskcompletionsource将此异步方法转成同步呢?

private void taskcompletesourcebutton_onclick(object sender, routedeventargs e)
{
      var result = awaitbytaskcompletesource(testwithresultasync);
      debug.writeline($"4. taskcompletesource_onclick end:{result}");
}

  

taskcompletionsource使用步骤:

  1. 获取var sourcetask =taskcompletionsource.task,
  2. 等待此sourcetask结果-sourcetask.result
  3. 设置设置sourcetask.result的结果值
private void taskcompletesourcebutton_onclick(object sender, routedeventargs e)
{
      var result = awaitbytaskcompletesource(testwithresultasync);
      debug.writeline($"4. taskcompletesource_onclick end:{result}");
}

 

 

 

 



这篇关于C# 异步转同步 TaskCompletionSource的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程