c++ - Backgroundworkers,表单设计器创建的对象以及如何在dowork线程中访问它们
问题描述
我正在尝试在后台执行一项任务,我正在使用表单设计器创建的面板,但我的后台工作人员不允许访问它们。
我想使用一个充满面板的数组。但我不断收到错误消息:
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
}
我基本上想在无限循环中更改背景中面板的颜色。
解决方案
推荐阅读
- python - 在 Python 中使用 async/await 的 Azure ServiceBus 似乎不起作用
- angularjs - '意外的令牌{在函数(
)' 在 .pug 上运行迭代时出现错误 - dataweave - 如果它们不为空,则连接许多字符串的最有效方法
- javascript - Vue:无法将值从父组件传递给子组件
- c# - 创建 SSL 连接时的 .NET Core 3.1 Alpine 图像竞争条件
- kubernetes-helm - 具有多个部署的 helm install 图表 - 并行
- angular - Angular9 - 以模态形式打开反应形式的一部分
- mediawiki - 如何通过 MediaWiki API 获取维基百科所有内容页面的 Pageids 和 Title?
- javascript - 引号中的 Javastript 语法
- android - Flutter - 如何在 Listview 构建器顶部添加项目?