我对C#即将推出的异步/等待功能的设计有些怀疑。
Task<T>
var result = async GetResultAsync();
Async / away是一个很棒的功能,但我认为它的设计不如LINQ。此外,我觉得设计团队对当前的设计非常满意;并且可能不会考虑社区反馈。
您怎么看?
答案 0 :(得分:7)
在您尝试自己完成这项工作之前,这些设计决策往往毫无意义。您的任务:编写异步代码并随时停止。您的约束:您不能使用Thread.Abort()并且永远不会导致死锁。
答案 1 :(得分:6)
Async / away是一个很棒的功能,但我认为它的设计不如LINQ。
与LINQ的设计过程相比,您认为设计过程的哪些方面存在缺陷?
另外,我觉得设计团队对当前的设计非常满意;并且可能不会考虑社区反馈。
是什么给你留下这样的印象?我们一直在邀请社区反馈一段时间了。它不会被忽视。
您怎么看?
我认为这是一个讨论问题,而不是一个工程问题。你确定这是这个问题的正确网站吗?
答案 2 :(得分:4)
他们已经在Task
和Task<T>
投入了大量精力,旨在完全适应这种情况。我发现这非常方便,因为我确切地知道对任务有什么期望 - 以前使用它 - 我认为很多其他开发人员也会有这种感觉。在我看来,它比引入一些新东西要好得多 - 我甚至不确定什么可能会有所不同,这将使新类型更能完成任务。你有什么具体的想法吗?
我认为您错过了async
关键字的目的。它用于标记将(部分)异步执行的方法(当您使用await
关键字时)。编译器需要知道“执行魔术”的方法;它不会“转换”异步执行的方法。为此,您应该使用ThreadPool.QueueUserWorkItem
。
我无法对此发表评论。您认为什么是更优雅的解决方案?如果您与他们分享,我相信微软会将您的反馈考虑在内。
答案 3 :(得分:0)