SIL.Windows.Forms.Keyboarding/Windows/WinKeyboardAdaptor.cs
/// <summary>
/// Executes in two distinct scenarios.
///
/// 1. If disposing is true, the method has been called directly
/// or indirectly by a user's code via the Dispose method.
/// Both managed and unmanaged resources can be disposed.
///
/// 2. If disposing is false, the method has been called by the
/// runtime from inside the finalizer and you should not reference (access)
/// other managed objects, as they already have been garbage collected.
/// Only unmanaged resources can be disposed.
/// </summary>
/// <param name="disposing"></param>
/// <remarks>
/// If any exceptions are thrown, that is fine.
/// If the method is being done in a finalizer, it will be ignored.
/// If it is thrown by client code calling Dispose,
/// it needs to be handled by fixing the bug.
///
/// If subclasses override this method, they should call the base implementation.
/// </remarks>
Executes in two distinct scenarios.

1. If disposing is true, the method has been called directly
or indirectly by a user's code via the Dispose method.
Both managed and unmanaged resources can be disposed.

2. If disposing is false, the method has been called by the
runtime from inside the finalizer and you should not reference (access)
other managed objects, as they already have been garbage collected.
Only unmanaged resources can be disposed.
Executes in two distinct scenarios . 1 . If disposing is true the method has been called directly or indirectly by a user ' s code via the Dispose method . Both managed and unmanaged resources can be disposed . 2 . If disposing is false the method has been called by the runtime from inside the finalizer and you should not reference ( access ) other managed objects as they already have been garbage collected . Only unmanaged resources can be disposed .
protected virtual void Dispose(bool disposing)
		{
			Debug.WriteLineIf(!disposing, "****************** " + GetType().Name + " 'disposing' is false. ******************");
			if (IsDisposed)
				return;
			if (disposing)
			{
				if (_timer != null)
				{
					_timer.Dispose();
					_timer = null;
				}
				if (_profileNotifySinkCookie > 0)
				{
					if (TfSource != null)
						TfSource.UnadviseSink(_profileNotifySinkCookie);
					_profileNotifySinkCookie = 0;
				}
			}
			IsDisposed = true;
		}
protected virtual void Dispose ( bool disposing ) { Debug . WriteLineIf ( ! disposing , " " + GetType ( ) . Name + " " ) ; if ( IsDisposed ) return ; if ( disposing ) { if ( _timer != null ) { _timer . Dispose ( ) ; _timer = null ; } if ( _profileNotifySinkCookie > 0 ) { if ( TfSource != null ) TfSource . UnadviseSink ( _profileNotifySinkCookie ) ; _profileNotifySinkCookie = 0 ; } } IsDisposed = true ; }
Executes in two distinct scenarios.
Executes in two distinct scenarios .
// Must not be run more than once. // Dispose managed resources here. // Dispose unmanaged resources here, whether disposing is true or false.
disposing
bool
None
remarks
If any exceptions are thrown, that is fine.
If the method is being done in a finalizer, it will be ignored.
If it is thrown by client code calling Dispose,
it needs to be handled by fixing the bug.

If subclasses override this method, they should call the base implementation.
If any exceptions are thrown that is fine . If the method is being done in a finalizer it will be ignored . If it is thrown by client code calling Dispose it needs to be handled by fixing the bug . If subclasses override this method they should call the base implementation .