c#async等待实现

时间:2011-02-06 16:00:41

标签: c# concurrency async-await

我对C#即将推出的异步/等待功能的设计有些怀疑。

  1. 将新机制附加到Task<T>
  2. 的便利性
  3. 我认为最好使用async替换await关键字。 对于expaple:var result = async GetResultAsync();
  4. 使用a取消正在进行的异步操作的机制 令牌并不像我认为的那样优雅。
  5. Async / away是一个很棒的功能,但我认为它的设计不如LINQ。此外,我觉得设计团队对当前的设计非常满意;并且可能不会考虑社区反馈。

    您怎么看?

4 个答案:

答案 0 :(得分:7)

在您尝试自己完成这项工作之前,这些设计决策往往毫无意义。您的任务:编写异步代码并随时停止。您的约束:您不能使用Thread.Abort()并且永远不会导致死锁。

答案 1 :(得分:6)

  

Async / away是一个很棒的功能,但我认为它的设计不如LINQ。

与LINQ的设计过程相比,您认为设计过程的哪些方面存在缺陷?

  

另外,我觉得设计团队对当前的设计非常满意;并且可能不会考虑社区反馈。

是什么给你留下这样的印象?我们一直在邀请社区反馈一段时间了。它不会被忽视。

  

您怎么看?

我认为这是一个讨论问题,而不是一个工程问题。你确定这是这个问题的正确网站吗?

答案 2 :(得分:4)

  1. 他们已经在TaskTask<T>投入了大量精力,旨在完全适应这种情况。我发现这非常方便,因为我确切地知道对任务有什么期望 - 以前使用它 - 我认为很多其他开发人员也会有这种感觉。在我看来,它比引入一些新东西要好得多 - 我甚至不确定什么可能会有所不同,这将使新类型更能完成任务。你有什么具体的想法吗?

  2. 我认为您错过了async关键字的目的。它用于标记将(部分)异步执行的方法(当您使用await关键字时)。编译器需要知道“执行魔术”的方法;它不会“转换”异步执行的方法。为此,您应该使用ThreadPool.QueueUserWorkItem

  3. 我无法对此发表评论。您认为什么是更优雅的解决方案?如果您与他们分享,我相信微软会将您的反馈考虑在内。

答案 3 :(得分:0)