最新バージョンは、他のバージョンは、独自のを修正する必要がサポートするために、2.1 2015年11月10日デルファイXE7、XE8と10シアトル追加する必要があります
公式サイト:www.mitov.com www.openwire.org
1、パスサーチパスを追加
2、BMThreadDsnD7.dpk最初にコンパイル、インストール
2つのコントロールのインストール後
ユニットBMDThread; インターフェース 用途 Windowsの、メッセージ、sysutilsの、クラス、コントロール、フォーム、Syncobjs、ExtCtrls。 タイプ {フォワードクラス宣言} TBMDThread =クラス。 TBMDExecuteThread =クラス。 TBMDThreadGroup =クラス。 {スレッドイベント} TBMDThreadNotifyEvent =手順(送信者:TObjectを、スレッド:TBMDExecuteThread)オブジェクトの、 TBMDThreadDataNotifyEvent =プロシージャオブジェクトの(送信者:TObjectを;:;スレッドTBMDExecuteThread VARデータポインタ)。 TBMDThreadUpdateNotifyEvent =手順(送信者:TObjectを、スレッド:TBMDExecuteThread; VARデータ:ポインタ;パーセントは整数)オブジェクトの、 TBMDThreadSynchroNotifyEvent =手順(送信者:TBMDThread;スレッド:TBMDExecuteThread)オブジェクトの、 TBMDThreadSynchroDataNotifyEvent =プロシージャオブジェクトの(送信者:TBMDThread;:;スレッドTBMDExecuteThread VARデータポインタ)。 {TBMDExecuteThreadクラス} TBMDExecuteThread =クラス(のTThread) 民間 {プライベート宣言} 保護されました {保護宣言} ThreadOwner:TBMDThread。 信頼された:ポインタ; FNotifyEvent:TNotifyEvent; FThreadNotifyEvent:TBMDThreadSynchroNotifyEvent。 FThreadDataNotifyEvent:TBMDThreadSynchroDataNotifyEvent。 updateData:ポインタ; 手順()を実行し、オーバーライド; 公衆 {公開宣言} PercentProgress:整数; コンストラクタ(:; AUpdateData TBMDThread:AThreadOwnerポインタ)を作成します。バーチャル; 手順DoNotifySynchro; 手順DoThreadNotifySynchro; 手順DoThreadNotifySynchroData; 手順同期(SynchroEvent:TNotifyEvent)。過負荷; 手順同期(SynchroEvent:TBMDThreadSynchroNotifyEvent)。過負荷; 手順同期(SynchroEvent:TBMDThreadSynchroDataNotifyEvent;データ:ポインタ); 過負荷; // folowing二つの機能が廃止され、将来的に使用すべきではありません! //廃止されました!これ以上は使用しないでください!>>>> 手順同期(SynchroEvent:TBMDThreadNotifyEvent)。過負荷; 手順同期(SynchroEvent:TBMDThreadDataNotifyEvent;データ:ポインタ); 過負荷; // <<<廃止されました!これ以上は使用しないでください! プロパティは終了します。 終わり; {TBMDThreadクラス} TBMDThreadBase =クラス(TComponentの) 民間 FOnUpdate:TBMDThreadUpdateNotifyEvent。 FOnStart:TBMDThreadDataNotifyEvent。 FOnTerminate:TBMDThreadDataNotifyEvent。 FThreadGroup:TBMDThreadGroup。 FUpdatePriority:整数; 保護されました UpdateCriticalSection:TCriticalSection。 機能GetRuning():ブール; バーチャル; 概要; 手順SetThreadGroup(AThreadGroup:TBMDThreadGroup)。 手順ReportStarted(スレッドグループ:TBMDThreadGroup)。バーチャル; 概要; 手順ReportTerminated(スレッドグループ:TBMDThreadGroup)。バーチャル; 概要; 機能AddMe(AThreadGroup:TBMDThreadGroup):ブール; バーチャル; 概要; 手順RemoveMe(AThreadGroup:TBMDThreadGroup)。バーチャル; 概要; 公衆 コンストラクタ(所有者:TComponentの)を作成します。オーバーライド; デストラクタ破壊します。オーバーライド; 手順[スタート](); 過負荷; バーチャル; 概要; 手順スタート(データ:ポインタ); 過負荷; バーチャル; 概要; 手続きの停止(); バーチャル; 概要; 手順)(サスペンド。バーチャル; 概要; 手順の再開()。バーチャル; 概要; 公衆 プロパティruningて:ブールGetRuningを読みます。 プロパティスレッドグループ:TBMDThreadGroupはFThreadGroup書き込みSetThreadGroupを読みます。 プロパティUpdatePriority:整数FUpdatePriority書き込みFUpdatePriorityデフォルト0を読んで。 プロパティにonUpdate:TBMDThreadUpdateNotifyEventはFOnUpdate書き込みFOnUpdateを読みます。 プロパティのOnStart:TBMDThreadDataNotifyEventはFOnStart書き込みFOnStartを読みます。 プロパティOnTerminate:TBMDThreadDataNotifyEventはFOnTerminate書き込みFOnTerminateを読みます。 終わり; {TBMDThreadクラス} TBMDThread =クラス(TBMDThreadBase) 保護されました FUpdateTimer:thour。 FOnExecute:TBMDThreadDataNotifyEvent。 FExecuteThread:TBMDExecuteThread。 FPriority:TThreadPriority。 FUpdateEnabled:ブール。 FInterrupted:ブール。 手順OnUpdateTimer(送信者:TObjectを); バーチャル; 手順()を実行し、バーチャル; 手順OnThreadTerminate(送信者:TObjectを); バーチャル; 手順OnThreadTerminateClose(送信者:TObjectを); バーチャル; 手順ReportStarted(スレッドグループ:TBMDThreadGroup)。オーバーライド; 手順ReportTerminated(スレッドグループ:TBMDThreadGroup)。オーバーライド; 機能AddMe(AThreadGroup:TBMDThreadGroup):ブール; オーバーライド; 手順RemoveMe(AThreadGroup:TBMDThreadGroup)。オーバーライド; 手順SetTimeInterval(時間間隔:枢機卿)。 機能GetTimeInterval():枢機卿。 手順のsetpriority(値:TThreadPriority)。 機能GetPriority():TThreadPriority。 機能GetRuning():ブール; オーバーライド; 機能GetEmptyEntry():TPersistentは、 手順SetUpdateEnabled(値:ブール値); 公衆 コンストラクタ(所有者:TComponentの)を作成します。オーバーライド; デストラクタ破壊します。オーバーライド; 手順[スタート](); 過負荷; オーバーライド; 手順スタート(データ:ポインタ); 過負荷; オーバーライド; 手続きの停止(); オーバーライド; 手順)(サスペンド。オーバーライド; 手順の再開()。オーバーライド; プロパティruningて、 プロパティ中断:ブールFInterruptedを読みます。 プロパティのスレッド:TBMDExecuteThreadはFExecuteThreadを読みます。 公表 プロパティRefreshInterval:枢機卿はGetTimeInterval書き込みSetTimeIntervalデフォルト100を読み込みます。 プロパティの優先順位:TThreadPriorityはGetPriorityの書き込みを読んでのsetpriorityデフォルトtpNormal。 プロパティのThreadGroup; プロパティUpdatePriority; プロパティは、updateEnabledを:ブールSetUpdateEnabled FUpdateEnabled書き込みを読んで、 プロパティSynchroMethods:TPersistentははGetEmptyEntryを読みます。 プロパティOnExecuteイベント:TBMDThreadDataNotifyEventはFOnExecute書き込みFOnExecuteを読みます。 プロパティにonUpdate; プロパティのOnStart; プロパティOnTerminate; 終わり; TBMDThreadGroup =クラス(TBMDThreadBase) 保護されました ThreadItemsList:TListの。 ThreadsList:TListの。 FOnThreadUpdate:TBMDThreadUpdateNotifyEvent。 FOnThreadStart:TBMDThreadDataNotifyEvent。 FOnThreadTerminate:TBMDThreadDataNotifyEvent。 //クリティカルセクションによって保護されました FCountRuning:整数; 機能GetRuning():ブール; オーバーライド; GetCountRuning機能():整数; バーチャル; 機能GetThreadItemsCount():整数; 関数GetThreadItems(インデックス:整数):TBMDThreadBase。 機能GetThreadsCount():整数; 関数GetThreads(インデックス:整数):TBMDThread。 手順ReportStarted(スレッドグループ:TBMDThreadGroup)。オーバーライド; 手順ReportTerminated(スレッドグループ:TBMDThreadGroup)。オーバーライド; 機能AddMe(AThreadGroup:TBMDThreadGroup):ブール; オーバーライド; 手順RemoveMe(AThreadGroup:TBMDThreadGroup)。オーバーライド; 機能LinkedToMe(ThreadBase:TBMDThreadBase):ブール; 公衆 コンストラクタ(所有者:TComponentの)を作成します。オーバーライド; デストラクタ破壊します。オーバーライド; 手順[スタート](); 過負荷; オーバーライド; 手順スタート(データ:ポインタ); 過負荷; オーバーライド; 手続きの停止(); オーバーライド; 手順)(サスペンド。オーバーライド; 手順の再開()。オーバーライド; 機能AddThread(AThread:TBMDThread):ブール; 手順RemoveThread(AThread:TBMDThread)。 機能AddThreadGroup(AThreadGroup:TBMDThreadGroup):ブール; 手順RemoveThreadGroup(AThreadGroup:TBMDThreadGroup)。 手順ThreadStarted(送信者:TObjectを;スレッド:TBMDExecuteThread; VARデータ:ポインタ); 手順ThreadUpdate(送信者:TObjectを;スレッド:TBMDExecuteThread; VARデータ:ポインタ; AUpdatePriority:整数; PercentProgres:整数); 手順ThreadTerminated(送信者:TObjectを;スレッド:TBMDExecuteThread; VARデータ:ポインタ); 公衆 プロパティruningて、 プロパティCountRuning:整数GetCountRuningを読みます。 プロパティThreadItemsCount:整数GetThreadItemsCountを読みます。 プロパティThreadItems [インデックス:整数]:TBMDThreadBaseはGetThreadItemsを読みます。 プロパティThreadsCount:整数GetThreadsCountを読みます。 プロパティスレッド[インデックス:整数]:TBMDThreadはGetThreadsを読みます。 公表 プロパティのThreadGroup; プロパティUpdatePriority; プロパティにonUpdate; プロパティのOnStart; プロパティOnTerminate; プロパティOnThreadUpdate:TBMDThreadUpdateNotifyEventはFOnThreadUpdate書き込みFOnThreadUpdateを読みます。 プロパティOnThreadStart:TBMDThreadDataNotifyEventはFOnThreadStart書き込みFOnThreadStartを読みます。 プロパティOnThreadTerminate:TBMDThreadDataNotifyEventはFOnThreadTerminate書き込みFOnThreadTerminateを読みます。 終わり; 実装