Msgstr "Операция между потоками недопустима: управление 'form1' осуществляется из потока, отличного от потока, в котором он был создан." - PullRequest
0 голосов
/ 12 июня 2019

У меня есть проект winforms, который имеет formA и formB.Когда formA загружается, он вызывает класс Calculation для выполнения логики и открывает formB для отображения чего-либо.formA имеет кнопку для закрытия formB.Когда я нажимаю кнопку, чтобы закрыть formB, выдается сообщение об ошибке:

"Операция с несколькими потоками недопустима: доступ к элементу управления formB осуществляется из потока, отличного от потока, в котором он был создан. "

List<Form> forms = new List<Form>();

formA_Load()
{
    DemoObject calfrmA = new DemoObject();
    calfrmA.getData();
}


public class DemoObject
{
    public void getData()
    {
         formB frmB = new frmB();
         frmB.Name = "frmB";
         forms.Add(frmB);
         frmB.Show();
    }
}

formA нажатие кнопки

public void button1_click()
{
       foreach(Form frm in forms)
       {
            if(frm.Name == "frmB")
            {
                 frm.Close();
            }
       }
}

frm.Close() выдает ошибку.Как я могу решить проблему?Пожалуйста, ведите меня.Спасибо

Отредактированный код : Я пытался, но все так же.DemoObject это класс.

formA_Load()
{
    foreach (DemoObject tobject in objectList.Values) {
                Thread thread = new Thread(delegate ()
                {
                    this.Invoke(new MethodInvoker(delegate
                    {
                        tobject.getData();
                    }));
                });
                thread.Start();
            }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...