PRISM/Unity IDisposable

4

我有一些模块需要在关闭时进行一些整理工作,但似乎PRISM/Unity不尊重IDisposable接口。有没有人有关于如何让它正常工作的建议?


我的回答有帮到你吗,伙计? - Dutts
2个回答

3

我遇到了同样的问题,并通过以下方式解决:

首先,我创建了一个自定义事件,以便向我的模块发出信号,表明容器正在关闭:

public class ApplicationExitEvent : CompositePresentationEvent<string> { }

然后在我的引导程序中,我实现了IDisposable并在我的Dispose()方法中触发了事件:

    public void Dispose()
    {
        var eventAggregator = Container.Resolve<IEventAggregator>();
        if (eventAggregator != null)
        {
            eventAggregator.GetEvent<ApplicationExitEvent>().Publish("");
        }
    }

然后在我的模块的Initialize()方法中,我订阅了这个事件:

EventAggregator.GetEvent<ApplicationExitEvent>().Subscribe((o) => Dispose(), true);

将任何清理代码放在我的模块的Dispose方法中。

希望这可以帮到你。


1

很可能您的模块未被处理,因为它们在容器中注册为单例(共享)组件。

Application.Exit时手动Dispose()您的容器,所有可处理的模块(以及来自该容器的其他解析的共享可处理组件)应调用其IDisposable.Dispose()方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接