- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我编写了一个订阅 DebuggerEvents.OnEnterBreakMode 事件的 visual studio 扩展包。但是这个事件永远不会被引发。
这是一些代码:
protected override void Initialize()
{
base.Initialize();
applicationObject = (DTE2) GetService(typeof (DTE));
applicationObject.Events.BuildEvents.OnBuildDone += BuildEventsOnOnBuildDone;
applicationObject.Events.DebuggerEvents.OnEnterBreakMode += DebuggerEventsOnOnEnterBreakMode;
}
但是永远不会调用方法 DebuggerEventsOnOnEnterBreakMode
。方法 BuildEventsOnOnBuildDone
被调用。
为什么会发生这种情况?
最佳答案
我知道这听起来很傻,但是为了监听 DebuggerEvents
事件,您需要维护对 DebuggerEvent
本身的引用。
DebuggerEvents _debuggerEvents;
protected override void Initialize() {
applicationObject = (DTE2) GetService(typeof (DTE));
_debuggerEvents = applicationObject.Events.DebuggerEvents;
_debuggerEvents.OnEnterBreakMode += DebuggerEventsOnOnEnterBreakMode
这样做的原因很微妙。 DebuggerEvents
实际上是一个 COM/CCW 对象,它是在访问 DTE.DebuggerEvents
属性时按需创建的。事件处理程序代码不会使 CCW 保持事件状态,因此下一次 GC 可能会收集 DebuggerEvents
属性并带走事件处理程序。
这是一个非常奇怪的错误,特定于 CCW 和事件。我听说它被称为“有史以来最令人烦恼的错误”,这与事实相去不远
关于c# - Visual Studio 扩展包中未触发 DebuggerEvents.OnEnterBreakMode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22570121/
我编写了一个订阅 DebuggerEvents.OnEnterBreakMode 事件的 visual studio 扩展包。但是这个事件永远不会被引发。 这是一些代码: protected over
我有在 Visual Studio 2010 中成功运行的加载项,但是当我在 Visual Studio 2012 中运行它时,不会触发 DebuggerEvents.OnEnterRunMode 事
我是一名优秀的程序员,十分优秀!