GoView ObjectDisposedException


I got an ObjectDisposedException on a view derived from GoView:

Stack trace:
   bei System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate
method, Object[] args, Boolean synchronous)
   bei System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
   bei System.Windows.Forms.Control.Invoke(Delegate method)
   bei Northwoods.Go.GoView.hoverCallback(Object obj)
   bei System.Threading._TimerCallback.TimerCallback_Context(Object state)
   bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext,
ContextCallback callback, Object state)
   bei System.Threading._TimerCallback.PerformTimerCallback(Object state)

My view is part of a workbench project window that can contain several view parts in tabs. The workbench is closed and all views were disposed when the project is closed.
In some cases, usually when closing the workbench view parts takes some time, I got the ObjectDisposedException.

As it seems this is the result of the hover timer callback that is executed as threadpool thread after 1000ms (default) when a MouseMove event occured.

The timer callback handler (hoverCallback) is a private method of GoView and is calling Control.Invoke() to marshal the call to the main thread but in certain cases (s.o.) the control has been already disposed and the exception is thrown.

A derived class could never interfere the timer callback execution except of disable the timer execution (set HoverDelay to -1) and thus disable MouseHover events at all.

I would recommend to check if the control is disposed already before calling Invoke.

I am using lib version


This problem is fixed in 4.1, the latest release.