mai*_*n-- 12 c# events add-in envdte visual-studio-2012
我使用"Visual Studio的加载项"向导来创建一个新的Addin项目,现在,我正在尝试添加一些事件处理程序:
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
_applicationObject.Events.BuildEvents.OnBuildBegin += BuildEvents_OnBuildBegin;
_applicationObject.Events.BuildEvents.OnBuildDone += BuildEvents_OnBuildDone;
_applicationObject.Events.SelectionEvents.OnChange += SelectionEvents_OnChange;
_applicationObject.Events.DocumentEvents.DocumentOpened += DocumentEvents_DocumentOpened;
_applicationObject.Events.DocumentEvents.DocumentSaved += DocumentEvents_DocumentSaved;
}
Run Code Online (Sandbox Code Playgroud)
但无论我做什么,我的处理程序都不会执行!
我瞎了吗?我是否必须做任何其他事情来注册这些处理程序或为什么它不起作用?
jes*_*ing 21
似乎你是垃圾收集器的受害者.请参阅:http://www.mztools.com/articles/2005/mz2005012.aspx
private readonly BuildEvents _buildEvents;
private readonly SelectionEvents _selectionEvents;
private readonly DocumentEvents _documentEvents;
private readonly Events _events;
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
_events = _applicationObject.Events;
_buildEvents = _events.BuildEvents;
_buildEvents.OnBuildBegin += BuildEvents_OnBuildBegin;
_buildEvents.OnBuildDone += BuildEvents_OnBuildDone;
_selectionEvents = _events.SelectionEvents;
_selectionEvents.OnChange += SelectionEvents_OnChange;
_documentEvents = _events.DocumentEvents;
_documentEvents.DocumentOpened += DocumentEvents_DocumentOpened;
_documentEvents.DocumentSaved += DocumentEvents_DocumentSaved;
}
Run Code Online (Sandbox Code Playgroud)