如果在 using 语句中使用 IDisposable 字段,是否需要将当前类设置为 IDisposable?

问题描述 投票:0回答:0

这是我的例子:

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”一次性然后实现处置?

c# idisposable
© www.soinside.com 2019 - 2024. All rights reserved.