我有用Borland C ++编写的USB通信源代码(“USBThread类”),并使用Visual Component Library(“vcl.h”)。 现在我的任务是将其移植到Visual C ++,因为我们没有购买Borland C ++。
但是这个“USBThread类”继承自“vcl.h”中的基类,称为“TThread”。
我可以问一下,在Visual C ++中,我可以使用什么样的基类来替换“TThread”作为新的继承源?
原始代码使用来自TThread的“WaitFor”和“Terminate”方法, 我不知道如何使用Visual C ++实现这两个menthod。
谢谢!
答案 0 :(得分:0)
这可能是一个很难的exoice imo,但看起来Boost.Thread使用join
WaitFor
而interrupt
使用Terminate
会让你开始。
我的基础是对docs for VCL found here的审核。我说这可能很困难,因为VCL可能有无记录或其他意外的行为。
答案 1 :(得分:0)
虽然您可以将VCL的TThread
类转换为C ++,但它不能很好地工作,因为它依赖于一些根本不转换为C ++的Delphi语义(特别是TObject::AfterConstruction()
方法)。您最好只需重新编写USBThread即可直接使用Win32线程函数,即CreateThread()
和WaitForSingleObject()
。对于Terminate()
,您只需在线程过程可以定期查看的位置设置bool
标志,并在设置为true时停止其工作。