private void DisposeHelper(bool disposing)
{
HWND hwnd = _hwnd;
if (hwnd != null) {
if (IsCorrectThread(hwnd)) {
// Call the virtual Dispose(bool)
Dispose(disposing);
} else {
// Send a message to the right thread to dispose for us.
NativeMethods.SendMessage(hwnd, _disposeMessage, _wndprocPtr, disposing ? new IntPtr(1) : IntPtr.Zero);
}
}
}