c# - 结束 BeginInvoke 的正确方法?

标签 c# lambda

我最近read this thread on MSDN .所以我在考虑使用 lambda 表达式作为调用 EndInvoke 的方式,以确保一切都很好和整洁。

哪个更正确?

示例 1:

Action<int> method = DoSomething;

method.BeginInvoke(5, (a)=>{method.EndInvoke(a);}, null);

示例 2:

Action<int> method = DoSomething;

method.BeginInvoke(5, (a)=>
  {
      Action<int> m = a.AsyncState as Action<int>;
      m.EndInvoke(a);
  }, method);

最佳答案

您的第二个示例稍微高效一些,因为“方法”委托(delegate)实例不必在闭包中捕获。我怀疑你会注意到。

关于c# - 结束 BeginInvoke 的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/435772/

相关文章:

C++ lambda 捕获 this vs 通过引用捕获

c# - 异步 lambda : "a task was cancelled"

c# - 如何使用 lambda 表达式选择项目

c# - RDLC 报告不断加载而不显示数据

c# - 如何比较列表并有效地获得最频繁的对?

c# - 当我从下拉列表中选择一个值来解决网格中的值时,它会覆盖它

java - 如何在java中重新定义lambda匿名类

c# - 递归读取 List<Object>

c# - 如何对多个网络应用程序使用单一登录

python - 使用 map 和 lambda 计算字典中的频率