Найти открытые формы в приложении c # windows

Я использую эту функцию, чтобы закрыть существующую форму и открыть новую форму.

Если нет никакой формы exixting, это выдает ошибку.

Ошибка :

Цель: System.Object MarshaledInvoke (System.Windows.Forms.Control, System.Delegate, System.Object [], Boolean)

Сообщение: Invoke или BeginInvoke не могут быть вызваны для элемента управления, пока не будет создан дескриптор окна.

Стек: в System.Windows.Forms.Control.MarshaledInvoke (вызывающий элемент управления, метод Delegate, аргументы Object [], логическое синхронное значение)

ТАК нужно проверить любую форму, открытую перед закрытием формы, чтобы избежать ошибки. Как?

    static public void NewMainForm(Form main, bool ClosePreviousMain)
    {
            if (main != null)
            {
                Global.ActiveForm = main.Text;
                if (ClosePreviousMain & MyContext.curMain != null)
                {
                    MyContext.curMain.FormClosed -= new FormClosedEventHandler(main_FormClosed);
                    //Need to check for any form active and then close the form.
                    MyContext.curMain.Invoke(new Action(MyContext.curMain.Dispose));
                }
                MyContext.curMain = main;
                MyContext.curMain.FormClosed += new FormClosedEventHandler(main_FormClosed);
                MyContext.curMain.ShowDialog();
            }
    }

Ответы на вопрос(4)

Ваш ответ на вопрос