我发现了一些奇怪的代码在一个旧的项目我们的,这是看起来像这样:使用关键字+ Lambda表达式
using (var removeGroupMembershipWorker = new BackgroundWorker())
{
removeGroupMembershipWorker.DoWork += (senderRGMW, eRGMW) =>
{
};
removeGroupMembershipWorker.RunWorkerAsync();
}
在lambda的代码会被省略。
对于我来说,using
关键字和lambda表达式不能很好地结合在一起:Lambda必须在类层次上利用该对象,否则代码将无法在以后调用。
但是using
关键字是如何在这里工作的? Thread显然不会等待Async完成,但当using
块剩下时会发生什么?
using
在这种情况下是否被忽略?
伊迪丝说:因为我缺少拉古斯的答案和这个超级链接;我在这里添加它:http://softwareblog.alcedo.com/post/2011/12/09/Using-blocks-and-asynchronous-operations.aspx
这解释了有关该主题的问题和解决方案。
你可以发表RunWorkerAsync()方法的正文吗? – Michael 2014-08-27 10:29:02
Raghu写道,不需要感谢,这两个概念不能很好地协同工作 – 2014-08-27 11:06:00
“使用”和lambda表达式之间的交互没有问题,这里的问题是由于异步,对象应该活得更长。所以lambda不是这里的问题,async nature + dispose是。 – 2014-09-02 07:29:32