这是我的例子:
public sealed class BigLogicClass
{
private SmallDisposableClass fMyDisposableClass;
public void Setup(someParam)
{
var eventHandlerFactory = new EventHandlerFactory();
var eventHandler = eventHandlerFactory.Create(someParam);
eventHandler.SomeEvent += OnDoingThisEvent;
}
public void DoSomething()
{
using(fMyDisposableClass = new SmallDisposableClass())
{
// run a long process.
}
}
private void OnDoingThisEvent()
{
fMyDisposableClass.RunSomething();
}
}
我在这个类中有一个方法“OnDoingThisEvent”,它由另一个类“eventHandler”在其他地方调用。 “OnDoingThisEvent”需要能够使用“fMyDisposableClass”。然而,这样做会引发代码分析错误,基本上表明“fMyDisposableClass”没有被正确处理。
它唯一被实例化的地方是在
using statement
中,它包含了“fMyDisposableClass”应该存在的进程的生命周期。在此过程中,可以调用“OnDoingThisEvent”。据推测,这意味着一旦该过程完成,“fMyDisposableClass”的实例将被释放。那么这是一个问题吗?如果是这样,我如何才能使用“fMyDisposableClass”而不将“BigLogicClass”一次性然后实现处置?