后台工作人员,由表单设计人员创建的对象以及如何在dowork线程中访问它们

时间:2019-09-04 06:28:59

标签: c++ multithreading clr backgroundworker

我正在尝试在后台执行任务,并且正在使用由表单设计器创建的面板,但是不允许我的背景工作人员访问它们。

我想使用填充有面板的数组。但我不断收到错误消息:

  

System.InvalidOperationException

当我尝试将它们添加到我的cliext :: vector中时。其中说即时消息不允许使用面板,因为它们是在其他线程中创建的。

我试图捕获异常,并试图使数组为静态,但这也不起作用。还有一个使用Invoker的选项,但我无法运行它。

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    backgroundWorker1->RunWorkerAsync(1);
}

private: System::Void backgroundWorker1_DoWork(System::Object^  sender, System::ComponentModel::DoWorkEventArgs^  e) {
    cliext::vector<Panel^> allePanel;
    allePanel.push_back(panel1);//1
    allePanel.push_back(panel4);//2
    allePanel.push_back(panel3);//3
}

我基本上想无限循环地更改背景中面板的颜色。

0 个答案:

没有答案