异步委托调用的生命周期

时间:2012-06-28 22:14:55

标签: c# asynchronous delegates windows-services

我的服务中有以下代码:

protected override void OnStart(string[] args)
{
    var cleaner = new Cleaner();
    Action action = cleaner.Run;
    action.BeginInvoke(null, null);
}

我担心是否应该将委托移动到实例变量,因为它使用的对象可能由GC收集,因为它们只在本地创建。

1 个答案:

答案 0 :(得分:0)

如果收集了仍在“使用中”的物品,会发生什么?这个问题没有明智的答案。因此,CLR保证不会对仍然被引用的对象进行垃圾回收。无论你如何编写代码,都是安全的。

如果仍然引用对象,您甚至无法获取对象。即使你想要。