public MainFormController(IApplicationEventDispatcher applicationEventDispatcher)
            : base(applicationEventDispatcher)
        {
            _mainForm = new MainForm(applicationEventDispatcher);

            WireUpApplicationEventHandlers();
        }
        protected override void Dispose(bool disposing)
        {
            if (Disposed) return;

            if (disposing)
            {
                // free other managed objects that implement IDisposable only
                UnwireApplicationEventHandlers();

                _mainForm.Dispose();
                _mainForm = null;
            }

            // release any unmanaged objects
            // set the object references to null

            Disposed = true;
        }