c# - 有没有办法在对象过期时得到通知?
问题描述
我在 MSProject 的 VSTO 插件中苦苦挣扎,以便在项目实际关闭时执行操作。我知道有一个 BeforeClose 事件,但这无济于事,因为在那之后有一个 Y/N/C 对话框,这可能会停止关闭。此外,与 Excel 和 Word 不同,ProjectClass 不提供其他地方建议的 Close() 事件。
我现在的想法是将打开的项目存储在 ObservableCollection 中,并在其 ChangeEvent() 中检查哪个项目已关闭。但不幸的是,在 ProjectClass 到期时不会调用 ChangeEvent,因为它已经关闭并且引用设置为 null。
我已经想到了一个自定义的 ObservableCollection,它通过计时器定期检查空引用,但在我看来这非常难看。
有没有人有任何想法?
解决方案
尝试关闭项目时应该触发的WindowActivate事件,因为随后另一个窗口将变为活动状态。跟踪打开的项目,然后在每个 WindowActivate 事件之后进行比较,以查看是否有任何项目不再打开。
推荐阅读
- asp.net - 翻译网站和国际化
- jakarta-ee - jee 服务器 jboss 和 wildfly 的任何 JEE OIDC 代理?
- bigdata - 如何通过聚合和累积来简化管道?
- sympy - 如何执行选择两个项目而不替换的乘法规则?
- java - 如何在单元测试调用的服务类方法中读取spring boot属性文件
- python - Python:如何在允许方法内修改的同时重用基本方法?
- keras - 用 Eli5 库解释 LSTM keras
- verilog - 从按钮中记住一个值
- fastcgi - FastCGI 在没有库的情况下处理多个请求
- solr - 尽管两个查询看起来具有相同的逻辑,但 Solr 查询返回不同的结果