首页 > 解决方案 > 有没有办法在对象过期时得到通知?

问题描述

我在 MSProject 的 VSTO 插件中苦苦挣扎,以便在项目实际关闭时执行操作。我知道有一个 BeforeClose 事件,但这无济于事,因为在那之后有一个 Y/N/C 对话框,这可能会停止关闭。此外,与 Excel 和 Word 不同,ProjectClass 不提供其他地方建议的 Close() 事件。

我现在的想法是将打开的项目存储在 ObservableCollection 中,并在其 ChangeEvent() 中检查哪个项目已关闭。但不幸的是,在 ProjectClass 到期时不会调用 ChangeEvent,因为它已经关闭并且引用设置为 null。

我已经想到了一个自定义的 ObservableCollection,它通过计时器定期检查空引用,但在我看来这非常难看。

有没有人有任何想法?

标签: c#event-handlingobservablevstoms-project

解决方案


尝试关闭项目时应该触发的WindowActivate事件,因为随后另一个窗口将变为活动状态。跟踪打开的项目,然后在每个 WindowActivate 事件之后进行比较,以查看是否有任何项目不再打开。


推荐阅读