我目前正在为现有的VCL应用程序开发新功能。该应用程序使用名为TeeChart的第三方包创建图表和静态图像。 有一个实例,我必须加载200万个数据点来创建静态图像图表。但是,这需要一段时间才能加载,用户无法在应用程序中执行任何操作 直到它完成。因此,我更愿意创建一个工作线程来处理数据点,以便GUI不会冻结。
方法setData()
设置以下成员变量,然后VCL组件将继续使用它们来创建图表:
// Holds the Y position for the image (columns)
DynamicArray<double>* mpda_XValues;
// Holds the colour for the corresponding element in the x and y
// position
DynamicArray<double>* mpda_YValues;
// Holds the z position for the image (rows)
DynamicArray<double>* mpda_ZValues;
创建工作线程时我应该考虑哪些事项?
当在一个方法setData(){...}
中进行所有数据处理时,如何使用boost创建线程?
答案 0 :(得分:2)
由于您使用的是VCL,因此查看TThread类可能是个好主意。从中创建一个继承的类,并在与主线程通信时使用Synchronize方法。您可以尝试查看:http://docwiki.embarcadero.com/VCL/en/Classes.TThread和http://docwiki.embarcadero.com/RADStudio/en/Defining_Thread_Objects
答案 1 :(得分:1)
您显然希望查看boost thread库。
这可能比您想象的要复杂得多。将具有副作用的同步函数转换为异步函数并非易事。有些事情需要考虑: