「Threadクラス」の版間の差分
提供: AB開発Wiki
ナビゲーションに移動検索に移動細 (ページ Thread クラス を Threadクラス へ移動: #127) |
|||
(2人の利用者による、間の5版が非表示) | |||
2行目: | 2行目: | ||
=== プロパティ === | === プロパティ === | ||
− | + | ||
+ | ==== Priority ==== | ||
+ | Priority As ThreadPriority | ||
+ | スレッドの実行優先順位を取得または設定します。[[ThreadPriority列挙体]]で列挙される値のいずれかになります。デフォルトはNormalです。 | ||
13行目: | 16行目: | ||
fpに別スレッドで実行するための関数ポインタを、argsにはパラメータを指定します。 | fpに別スレッドで実行するための関数ポインタを、argsにはパラメータを指定します。 | ||
+ | |||
+ | ==== Join ==== | ||
+ | Sub Join() | ||
+ | メソッド呼び出し元のスレッドを、対象スレッドが終了するまで待機します。 | ||
==== Resume ==== | ==== Resume ==== | ||
32行目: | 39行目: | ||
== 使用例 == | == 使用例 == | ||
− | + | ABのThreadクラスを利用したスレッド生成には、「派生先クラスでRunメソッドをオーバーロードする方法」「コンストラクタに関数ポインタを指定する方法」の二通りが存在します。 | |
+ | |||
+ | === 派生先クラスでRunメソッドをオーバーロードする例 === | ||
+ | Class SubThread | ||
+ | Inherits Thread | ||
+ | Public | ||
+ | Override Function Run() As Long | ||
+ | Print "サブスレッドを実行中。このスレッドは3秒で終了します。" | ||
+ | Sleep(3000) | ||
+ | End Function | ||
+ | End Class | ||
+ | |||
+ | 'スレッドオブジェクトを生成し、実行を開始 | ||
+ | Dim t As SubThread() | ||
+ | t.Start() | ||
+ | |||
+ | '待機 | ||
+ | t.Join() | ||
+ | |||
+ | Print "tスレッドは終了しました。" | ||
+ | |||
+ | === コンストラクタに関数ポインタを指定する例 === | ||
+ | Function TestProc(args As VoidPtr) As Long | ||
+ | Print "サブスレッドを実行中。このスレッドは3秒で終了します。" | ||
+ | Sleep(3000) | ||
+ | End Function | ||
+ | |||
+ | 'スレッドオブジェクトを生成し、実行を開始 | ||
+ | Dim t As SubThread(AddressOf(TestProc), 0) | ||
+ | t.Start() | ||
+ | |||
+ | '待機 | ||
+ | t.Join() | ||
+ | |||
+ | Print "tスレッドは終了しました。" | ||
+ | |||
+ | [[Category:System.Threading名前空間]] |
2007年8月6日 (月) 01:57時点における最新版
クラスの機能
プロパティ
Priority
Priority As ThreadPriority
スレッドの実行優先順位を取得または設定します。ThreadPriority列挙体で列挙される値のいずれかになります。デフォルトはNormalです。
メソッド
コンストラクタ
Sub Thread() Sub Thread(fp As PTHREAD_START_ROUTINE, args As VoidPtr)
パラメータを持たないコンストラクタはThreadクラスを派生させる場合に利用します。
fpに別スレッドで実行するための関数ポインタを、argsにはパラメータを指定します。
Join
Sub Join()
メソッド呼び出し元のスレッドを、対象スレッドが終了するまで待機します。
Resume
Sub Resume()
スレッドのサスペンド カウントを 1 減らします。サスペンド カウントが 0 になるとスレッドは実行に移ります。
Run
Sub Run()
Runメソッドは仮想メソッドです。派生先クラスでこのメソッドをオーバーライドすることで実行されるスレッドモジュールを書き換えることができます。
Start
Sub Start()
スレッドを開始します。
Suspend
Sub Suspend()
スレッドをサスペンド状態(一時中断)にし、サスペンド カウントを 1 増やします。
使用例
ABのThreadクラスを利用したスレッド生成には、「派生先クラスでRunメソッドをオーバーロードする方法」「コンストラクタに関数ポインタを指定する方法」の二通りが存在します。
派生先クラスでRunメソッドをオーバーロードする例
Class SubThread Inherits Thread Public Override Function Run() As Long Print "サブスレッドを実行中。このスレッドは3秒で終了します。" Sleep(3000) End Function End Class 'スレッドオブジェクトを生成し、実行を開始 Dim t As SubThread() t.Start() '待機 t.Join() Print "tスレッドは終了しました。"
コンストラクタに関数ポインタを指定する例
Function TestProc(args As VoidPtr) As Long Print "サブスレッドを実行中。このスレッドは3秒で終了します。" Sleep(3000) End Function 'スレッドオブジェクトを生成し、実行を開始 Dim t As SubThread(AddressOf(TestProc), 0) t.Start() '待機 t.Join() Print "tスレッドは終了しました。"