2

誰かが私を助けてくれたら嬉しいです。私はC++Builderを初めて使用し、C++でスレッドを使用したことはありません。

クラッシュしないようにスレッド化したいc++Builder内のフォームがあります。現時点では、アプリケーションのバックグラウンドプロセスが完了するまで、フォームは読み込まれません。

4

1 に答える 1

4

C++ Builder では、スレッド オブジェクトを追加する必要があります ("project.exe" を右クリックし、新規追加、その他。C++ Builder ファイル フォルダーにあります)。次に、ヘッダー インクルードを追加し、オブジェクトをインスタンス化する必要があります。

オブジェクトを扱うにはあまりにも初心者である場合は、関数で CreateThread 関数を使用するだけです。ベストではないかもしれませんが、経験がなければとても簡単です。

TForm1 *Form1;
unsigned long __stdcall my_thread_func(void *args);

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner){
    CreateThread(NULL,0,&my_thread_func,NULL,0,NULL); //create thread in form constructor
}
//---------------------------------------------------------------------------
//  Write a function like this
unsigned long __stdcall my_thread_func(void *args){
Sleep(5000);
Form1->Caption = L"Done!!";
}
于 2012-10-25T01:25:45.833 に答える