Управление субформой из другого потока c # - PullRequest
1 голос
/ 30 сентября 2011

В моем проекте у меня есть:
Form1, <- это основная форма, запускаемая в основном потоке <br>Form2, <- это подчиненная форма <br>1 фоновый рабочий

возникла проблема:
когда я создаю новую форму внутри фонового работника и показываю ее с помощью

Form2 test = new Form2(); *test.show();*

форма появляется, но зависла, и я ничего не могу сделать с формой

вопрос:
1. может ли она создать форму внутри фонового рабочего, но форма будет работать в главном потоке?
2. если да, как это сделать?:)
3. если нет, то как управлять формой, которую я объявил в основном потоке, от backgroundworker

1 Ответ

0 голосов
/ 30 сентября 2011

Вы должны использовать Control.Invoke для создания новых форм.

public static class InvokeControl
    {
        public static void InvokeIfRequired(this Control c, Action<Control> action)
        {
            if (c.InvokeRequired)
            {
                c.Invoke(new Action(() => action(c)));
            }
            else
            {
                action(c);
            }
        }
    }

и классифицируйте этот метод по

InvokeControl.InvokeIfRequired(this, c => {//Create you're form here});
...