У меня есть проект 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();
}
}