【发布时间】:2012-12-22 08:33:31
【问题描述】:
我遇到了需要在使用 C++ 的 Windows 窗体 GUI 应用程序中使用多线程。从我对该主题的研究来看,后台工作线程似乎是我的目标。根据示例代码我有
System::Void backgroundWorker1_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e)
{
BackgroundWorker^ worker = dynamic_cast<BackgroundWorker^>(sender);
e->Result = SomeCPUHungryFunction( safe_cast<Int32>(e->Argument), worker, e );
}
但是有一些事情我需要弄清楚并弄清楚
- 后台工作线程会让我的多线程生活更轻松吗?
- 为什么我需要 e->Result?
- 传递给 backgroundWorker1_DoWork 函数的参数是什么?
- 参数safe_cast(e->Argument)的作用是什么?
- 我应该在我的 CPUHungryFunction() 中做些什么?
- 如果我的 CPUHungryFunction() 有一个无限循环的 while 循环怎么办?
- 我是否可以控制工作线程获得的处理器时间?
- 能否更具体地控制循环在设定周期内循环的次数?当我只需要每秒循环 30 次时,我不想使用 up cpu 每秒循环 1000 次。 *是否需要控制 GUI 的更新速度?
【问题讨论】:
-
我刚刚在我的帖子中添加了另一个关于 safe_cast(e->Argument) 的快速问题。
标签: c++ winforms multithreading c++-cli backgroundworker