Class : Task

概要 :

このクラスはバックグラウンドで実行される一連の処理をオブジェクトとして 定義するために使用されます。感覚的には一つのメソッド(関数)をオブジェクト 化したものです。

Taskクラス自体は具体的な処理を行いません。Threadクラス同様、開発者は このクラスのサブクラスを作成し、その中に具体的な処理を記述します。

Taskクラスのサブクラスをインスタンスしたもの(特に誤解がない場合、単に Taskまたはタスクと表記します)はTaskMngのインスタンスにAddTaskメソッドを 用いて追加する事で、バックグラウンドで実行する事ができます。

Event :

Open

タスクが生成された。
Taskクラスのサブクラスを生成し、コンストラクタを定義した場合、 このイベントが呼ばれるためにはコンストラクタ内でTaskメソッドを 実行する必要があります。

RunTask(Param as Variant) as Variant

タスクの実行が開始された。
このイベントハンドラ内にタスクの処理を記述します。

Param :

前のタスクの処理結果。
処理結果の有無や内容は各タスクによって異なります。 必ずVarTypeメソッドおよびIsA演算子で型判定を行って 利用してください。

戻り値 :

このタスクの任意の処理結果。
特に処理結果を次のタスクに渡す必要がない場合には Nilでかまいません。

TaskCanceled

タスクの中止が要求された。
このイベントを受信したタスクはできるだけ速やかに処理中の タスクを中止しなくてはいけません。

TaskStopped as Boolean

タスクの一時停止が要求された。
主にこのタスクよりも優先順位の高いタスクが発生した時に このイベントが発生します。

一時停止が可能な場合は、戻り値としてTrueを返した上で できるだけ速やかにRunTaskで実行中の処理を停止してください。

一時停止されたタスクには、再開時に改めてRunTaskイベントが 発生します。一時停止の際には再開が可能なように処理途中の データをプロパティに保持する等、必要な処理を行ってください。

タスクの一時停止は義務ではありません。停止できない場合には このイベントハンドラをからのままにするか、明示的にFalseを 返します。

Prorerties :

IsFinished as Boolean

属性 : 読み=public , 書き=private

RunTaskイベントハンドラの処理が完了した場合True 但し、タスクが一時停止した場合にもTrueになります

ErrorCode as Integer

属性 : 読み=public , 書き=protected(Taskとそのサブクラスのみ)

エラーコード。正常終了はTaskMngErrorCode.kTask_NoError Taskのサブクラスを作成する際にはTaskMngErrorCodeの内容を 必要に応じて加筆修正してください。

Progress as Integer

属性 : protected(Taskとそのサブクラスのみ)

RunTaskの進捗状況を設定または取得する。
値は0〜100の整数で指定します。100が完了を意味します。 この値は進捗状況のプログレスバー表示に使用されます。

このプロパティはTaskのサブクラスが進捗状況を管理するために 用意されています。 外部からは進捗状況を取得する際にはGetProgress()メソッドを 使用します。

TaskName as String

属性 : public

Taskの名前を設定します。 この名前は進捗状況のウインドウに表示されます。

TaskInfo as String

属性 : protected(Taskとそのサブクラスのみ)

Taskの現在の状態を説明するテキストをセットします。 この情報は進捗状況のウインドウに表示されます。

外部からは進捗状況を取得する際にはGetStates()メソッドを 使用します。

TaskPriority as Integer

属性 : public

Taskの優先度合いを示します。
値はkPriority_Important,kPriority_Normal,kPriority_NotImportant のいずれかです。初期値はkPriority_Normalです。

優先度の高いタスクが処理待ちの行列に追加されると、そのタスクは 既に待ち状態の他のタスクよりも優先的に実行されます。

Visible as Boolean

属性 : public

Taskの可視属性を指定します。
Falseに設定されたタスクは進捗状況ウインドウに表示されません。 処理時間の短いタスクや、前処理・後処理用のタスクにはこの プロパティをFalseに設定します。

Methods :

GetIcon as Picture

属性 : public

進捗状況ウインドウに表示するアイコンを返します。
初期状態では白紙のアイコンを返します。
サブクラスでこのメソッドをオーバーライドする事で進捗状況 ウインドウにアイコンを表示させる事ができます。

Finish

属性 : protected

処理が完了した事を通知します。 通常このメソッドは自動的に呼ばれるため、サブクラスが 利用する必要はありません。

サブクラスでFinishメソッドをオーバーライドしてタスク完了時の 処理を追加した場合だけ、スーパークラス(=Task)のFinishを 実行する必要があります。

GetProgress as Integer

属性 : public

処理の進捗状況を取得するために使用します。
また、Taskクラスのサブクラス内でこのメソッドをオーバーライド する事で、Progressプロバティを使わず、必要な時だけ進捗を計算 すればよくなります。

HasError as Boolean

属性 : public

処理中にエラーの発生があったかどうかを返します。 エラーがあった場合にはErrorCodeプロパティを用いてより詳細な エラー原因を調べる事ができます。

ReqCancel

属性 : public

タスクの中止を要求します。
このメソッドが呼ばれると対象タスクにTaskCanceledイベントが 発生します。

ReqStop as Boolean

属性 : public

タスクの一時停止を要求します。
このメソッドが呼ばれると対象タスクにTaskCStoppedイベントが 発生します。

タスクが一時停止に応じた場合、Trueが返ります。
なお、Trueが返った時点ではタスクはまだ中断処理の途中である 可能性があります。

TaskMngによって自動的にこのメソッドが呼ばれた場合には、 停止したタスクには適切なタイミングで再度RunTaskイベントが 呼ばれます。一方、明示的にこのメソッドを呼んだ場合には、 再開するためには再度TaskMngオブジェクトにタスクを追加する必要 があります。

Run

タスクのRunTaskイベントを発生させ、処理を開始させます。
通常このメソッドはTaskMngオブジェクトによって実行されます。 明示的に実行する必要はありません。