c# – 如何使任务等待

c# – 如何使任务等待,第1张

概述昨天我开始玩微软CTP异步库,无法找到正确执行等待的任务.我知道它必须有这样的实现: public struct SampleAwaiter<T>{ private readonly Task<T> task; public SampleAwaiter(Task<T> task) { this.task = task; } public bool IsCompleted 昨天我开始玩微软CTP异步库,无法找到正确执行等待的任务.我知道它必须有这样的实现:
public struct SampleAwaiter<T>{    private Readonly Task<T> task;    public SampleAwaiter(Task<T> task) { this.task = task; }    public bool IsCompleted { get { return task.IsCompleted; } }    public voID OnCompleted(Action continuation) { TaskEx.Run(continuation); }    public T GetResult() { return task.Result; }}

但是我现在如何实现一个任务,让我们等待5秒钟,并返回一些字符串,例如“Hello World”?

一种方法是直接使用任务:

Task<string> task = TaskEx.Run(            () =>                {                    Thread.Sleep(5000);                    return "Hello World";                });        string str = await task;

但是,如何等待实施呢?还是我只是误解了一切?

感谢任何信息/帮助:)

解决方法 这里的关键是AsyncCtpThreadingExtensions.GetAwaiter,它通过扩展方法提供这些方法.由于异步实现是基于模式的(如liNQ),而不是绑定到特定的接口,它可以来自任何地方(在这种情况下是TaskAwaiter).

你写的代码是等待的.例如:

static voID Main(){    test();    Console.Readline(); // so the exe doesn't burninate}static async voID test() {    Task<string> task = TaskEx.Run(           () =>           {               Thread.Sleep(5000);               return "Hello World";           });    string str = await task;    Console.Writeline(str);}

5秒后打印Hello World.

总结

以上是内存溢出为你收集整理的c# – 如何使任务等待全部内容,希望文章能够帮你解决c# – 如何使任务等待所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存