データ処理量が多い場合、データ処理中のユーザー操作にどう対応するか。 Windows95/98 および WindowsNT はマルチスレッド マルチタスク オペレーティング システムです。そのスケジューリング単位はスレッドです。つまり、スレッドはシステムがプロセッサ時間リソースを割り当てるための基本単位であるため、スレッドを使用して大きなバッチを処理できます。ユーザーの操作に応答しながらデータを収集します。
DELPHI は、優れた開発プラットフォームとして、マルチスレッド アプリケーションの開発を強力にサポートします。32 ビット Windows 環境が提供する Win32API インターフェイス関数 CreateThread を直接使用することも、DELPHI が提供する BeginThread 関数を使用することもできます。以下の例では、DELPHI が提供する TThread クラスを使用しています。
1つ。基本的な方法は次のとおりです。
1. Tthread クラスから新しいクラスを派生します。 (TSortThreadクラスの作成)
2.新しいクラスの Create メソッドを定義します。
3.新しいクラスの Execute メソッドを定義し、スレッドの実行時に実行されるコードを Execute メソッドに挿入します。
4.参照クラスのメソッドを使用してインスタンスを作成します。
二。例の詳細なコードと説明:
まず、新しいユニットを作成し、mysort.pas として保存します。このユニットでは、TThread クラスを継承する TSortThread クラスを作成しました。そのため、プログラム内でこのクラスのインスタンスを作成するときに、新しいスレッドを作成します。 。
次に、このクラスに Sort メソッドを定義して配列を並べ替えます。同時に、TSortThread クラスは TThread クラスのコンストラクター メソッド Create および Execute を超えて、配列を並べ替えるための Sort メソッドを呼び出します。具体的なコードは次のとおりです。
ユニットマイソート;
インタフェース
usesClasses;//TThread クラスは Classes で定義されます。
タイプ
PSortArray=TSortArray;
TSortArray=array.[0..MaxIntdivSize??
Of(整数)-1]ofInteger;
{ここで定義された TsortThread クラス}
TSortThread=クラス(TThread)
プライベート
{次のプライベート変数は TSortThread クラスで定義されています}
fsortArray:PSortArray;
Fサイズ:整数;
FA、FB、FI、FJ:整数;
保護されています
{クラス TSortThread はクラス Tthread の Execute メソッドを超えます}
プロシージャ 実行;上書き;
{クラス TsortThread が Sort メソッドを追加します}
プロシージャ Sort(varA:arrayofInteger);
公共
{クラス TSortThread はクラス Tthread のコンストラクター メソッドを超越します}
constructorCreate(varSortArray:arrayofInteger);
終わり;
実装
コンストラクターTSortThread.Create(varSortArray:arrayofInteger);
始める
FSortArray:=@SortArray;
FSize:=高(並べ替え配列)-低(並べ替え配列)+1;
FreeOn Terminate:=True;
継承された作成(False);
終わり;
{スレッドが開始されると、Execute メソッドが呼び出されます。 }
プロシージャ TSortThread.Execu??
て;
始める
ソート(スライス(FSortArray,FSize));
終わり;
{バブルソートは以下に実装されています}
プロシージャ TSortThread.Sort(varA:arrayofInteger);
変数
I、J、T: 整数;
始める
forI:=High(A)downtoLow(A)do
forJ:=低(A)to高(A)-1do
ifA[J]>A[J+1]then
始める
T:=A[J];
A[J]:=A[J+1];
A[J+1]:=T;
ifTerminated その後終了;
終わり;
終わり;
終わり
最後に、ユーザー アプリケーションの実装に usesmysort を追加し、並べ替えが実行される TQuickSortthread.Create(SortArray) を追加します。ここで、SortArray は実際の配列です。このように、スレッドを使用して並べ替え処理を実行するときに、ユーザーは並べ替えの終了を待たずに他の操作を実行できます。複数のスレッドを使用してユーザー操作にリアルタイムで応答するこの方法は、大量のデータ処理を伴うアプリケーションで特に重要です。