TNB Library
クラス | 公開メンバ関数 | 全メンバ一覧
CThreadDispatch クラス

スレッド処理制御クラス [詳解]

#include <TnbThreadDispatch.h>

+ CThreadDispatch の継承関係図

クラス

struct  IListener
 スレッド処理制御のリスナーインターフェース [詳解]
 

公開メンバ関数

 CThreadDispatch (void)
 コンストラクタ [詳解]
 
DWORD GetThreadId (void) const
 [取得] スレッドのID取得 [詳解]
 
bool IsAlive (void) const
 [確認] スレッドが生きているか [詳解]
 
bool IsDispatching (void) const
 [確認] 処理中? [詳解]
 
virtual bool OnThreadDispatchReceive (UINT nMsg, WPARAM wParam, LPARAM lParam)
 [通知] メッセージ受信. [詳解]
 
virtual void OnThreadDispatchSetup (void)
 [通知] 開始通知. [詳解]
 
bool PostMessage (UINT nMsg, WPARAM wParam=0, LPARAM lParam=0) const
 [設定] スレッドへPostMessage [詳解]
 
CThreadStatusReferThreadStatus (void)
 [参照] 処理スレッド状態参照. [詳解]
 
void SetListener (IListener *piListener)
 [登録] リスナー登録 [詳解]
 
bool SetPriority (int priority)
 [設定] 優先度設定. [詳解]
 
bool Start (LPCTSTR lpszName=NULL)
 [設定] スレッド開始 [詳解]
 
bool Stop (void)
 [設定] スレッド停止 [詳解]
 
virtual ~CThreadDispatch (void)
 デストラクタ [詳解]
 

詳解

スレッド処理制御クラス

メッセージ通知で、別スレッド内で処理をさせることができます。
覚え書き
処理は、リスナーを実装したクラスを登録するか、本クラスを継承し OnThreadDispatchReceive() をオーバーライドします。(推奨は前者)
リスナー内で SendMessage を使う場合、 ReferThreadStatus()関連ウィンドウを指定する 必要があります。 CThread::SetOwnerHwnd() を参照してください。
必要ファイル
TnbThreadDispatch.h
日付
06/04/01 新規作成
06/08/03 ThreadID取得メソッド追加。本クラスを継承して処理を実現させる方法も追加。
06/10/25 OnSetup() メソッド追加。
09/08/27 構成変更。
10/03/19 ReferThreadStatus() 追加。
11/01/06 DispatchMessage() を行うようにした。
11/02/03 IListener::OnThreadDispatchSetup() を呼ぶタイミングを変更。
12/05/31 IsDispatching() を追加。

TnbThreadDispatch.h46 行目に定義があります。

構築子と解体子

◆ CThreadDispatch()

CThreadDispatch ( void  )

コンストラクタ

TnbThreadDispatch.h93 行目に定義があります。

◆ ~CThreadDispatch()

virtual ~CThreadDispatch ( void  )
virtual

デストラクタ

TnbThreadDispatch.h101 行目に定義があります。

関数詳解

◆ GetThreadId()

DWORD GetThreadId ( void  ) const

[取得] スレッドのID取得

戻り値
ID

TnbThreadDispatch.h133 行目に定義があります。

◆ IsAlive()

bool IsAlive ( void  ) const

[確認] スレッドが生きているか

戻り値
true生きている
falseいない

TnbThreadDispatch.h191 行目に定義があります。

◆ IsDispatching()

bool IsDispatching ( void  ) const

[確認] 処理中?

戻り値
true処理中
false

TnbThreadDispatch.h218 行目に定義があります。

◆ OnThreadDispatchReceive()

virtual bool OnThreadDispatchReceive ( UINT  nMsg,
WPARAM  wParam,
LPARAM  lParam 
)
virtual

[通知] メッセージ受信.

最後は必ず nMsgにWM_QUITが入って通知されます。

覚え書き
リスナーを登録しないと、メッセージ受信時このメソッドがコールされます。 本クラスを継承し、本メソッドを継承することでも、処理が実装できます。 (リスナーを使用するほうを推奨します)
引数
nMsgメッセージ
wParamWPARAM
lParamLPARAM
戻り値
true正常
false切断要求

TnbThreadDispatch.h235 行目に定義があります。

◆ OnThreadDispatchSetup()

virtual void OnThreadDispatchSetup ( void  )
virtual

[通知] 開始通知.

受信スレッドが開始されると、通知されます。

覚え書き
リスナーを登録しないと、メッセージ受信時このメソッドがコールされます。 本クラスを継承し、本メソッドを継承することでも、処理が実装できます。 (リスナーを使用するほうを推奨します)

TnbThreadDispatch.h248 行目に定義があります。

◆ PostMessage()

bool PostMessage ( UINT  nMsg,
WPARAM  wParam = 0,
LPARAM  lParam = 0 
) const

[設定] スレッドへPostMessage

引数
nMsgメッセージ
wParamWPARAM。省略可能。
lParamLPARAM。省略可能。
戻り値
true成功
false失敗

TnbThreadDispatch.h204 行目に定義があります。

◆ ReferThreadStatus()

CThreadStatus & ReferThreadStatus ( void  )

[参照] 処理スレッド状態参照.

戻り値
スレッド状態の参照.

TnbThreadDispatch.h257 行目に定義があります。

◆ SetListener()

void SetListener ( IListener piListener)

[登録] リスナー登録

覚え書き
リスナーを登録しないと、メッセージ受信時、本クラスの OnThreadDispatchReceive() がコールされます。 (リスナーを使用するほうを推奨します)
引数
piListenerリスナー

TnbThreadDispatch.h112 行目に定義があります。

◆ SetPriority()

bool SetPriority ( int  priority)

[設定] 優先度設定.

メッセージキュースレッドの優先度を指定できます。

引数
priority優先度(-2〜2, 15。0がノーマル。大きいほうが優先度大)
戻り値
true成功.
false失敗.

TnbThreadDispatch.h124 行目に定義があります。

◆ Start()

bool Start ( LPCTSTR  lpszName = NULL)

[設定] スレッド開始

引数
lpszNameスレッドの名前(DEBUG以外では無視されます)
戻り値
true成功。
false失敗(スレッド起動失敗/既にスレッド実行中)

TnbThreadDispatch.h144 行目に定義があります。

◆ Stop()

bool Stop ( void  )

[設定] スレッド停止

戻り値
true成功(スレッドを開始していない時やTerminateした時も成功としています)
false失敗(リスナースレッド内で Stop() を使用すると失敗します)

TnbThreadDispatch.h175 行目に定義があります。