0

Borland C++ で記述された USB 通信 (「USBThread クラス」) のソース コードがあり、Visual Component Library (「vcl.h」) を使用しています。Borland C++ を購入していないので、私の仕事はそれを Visual C++ に移植することです。

しかし、この「USBThread クラス」は、「TThread」と呼ばれる「vcl.h」の基本クラスから継承されています。

Visual C++ で、「TThread」を新しい継承ソースとして置き換えるには、どのような基本クラスを使用できますか?

元のコードでは、TThread に付属する「WaitFor」メソッドと「Terminate」メソッドを使用していますが、これら 2 つのメソッドを Visual C++ で実装する方法がわかりません。

ありがとう!

4

2 に答える 2

0

VCL のクラスを C++ に変換することはできますが、 C++ にまったく変換されない Delphi セマンティクスに依存しているため(特にメソッド)TThread、うまく機能しません。TObject::AfterConstruction()USBThread を単純に書き直して、Win32 スレッド関数、つまりCreateThread()と を 直接使用するのが最善WaitForSingleObject()です。の場合Terminate()boolスレッド プロシージャが定期的に参照できる場所にフラグを設定し、true に設定するとその作業を停止するだけです。

于 2012-05-02T22:14:59.330 に答える
0

これは難しい演習になる可能性がありますが、Boost.Threadを使用してjoinforWaitForおよびinterruptforを使用するとTerminate開始できるようです。

ここにある VCLのドキュメントのレビューに基づいています。VCL には文書化されていない、または予期しない動作がある可能性があるため、これは難しい可能性が高いと言えます。

于 2012-04-24T14:50:32.037 に答える