And*_*cus 2 c# events extension-methods
在这种情况下,订阅代理CloseCompleted事件是不是很糟糕?
public static void Close(this MyWCFServiceClient proxy)
{
proxy.CloseCompleted += (o, e) =>
{
if (e.Error != null)
proxy.Abort();
};
proxy.CloseAsync();
}
Run Code Online (Sandbox Code Playgroud)
当代理不再被任何代码引用时,它是否仍会被垃圾收集,或者扩展方法中的事件订阅是否仍然存在对代理的引用?
我不会说这是不好的做法,但在一般情况下,显然应该会发生这种情况,即在///标记中清楚地记录下来.但是,在这种情况下,我们讨论的是对象的死亡 - 因此调用者可能在调用该方法后不希望对该对象做太多事情.我还想明确(可能在方法名称中)这是异步的.
重新垃圾收集; 事件使订户保持活力; 不是出版商.如果proxy符合条件,则会收集.匿名方法似乎不访问任何捕获的范围(除了proxy它自己) - 所以无论如何都没有任何有趣的东西(委托实例本身除外).