「Threadクラス」の版間の差分

提供:AB開発Wiki
ナビゲーションに移動検索に移動
編集の要約なし
(ページ Thread クラスThreadクラス へ移動: #127)
 
(2人の利用者による、間の4版が非表示)
5行目: 5行目:
==== Priority ====
==== Priority ====
  Priority As ThreadPriority
  Priority As ThreadPriority
スレッドの実行優先順位を取得または設定します。[[ThreadPriority 列挙体]]で列挙される値のいずれかになります。デフォルトはNormalです。
スレッドの実行優先順位を取得または設定します。[[ThreadPriority列挙体]]で列挙される値のいずれかになります。デフォルトはNormalです。




16行目: 16行目:


fpに別スレッドで実行するための関数ポインタを、argsにはパラメータを指定します。
fpに別スレッドで実行するための関数ポインタを、argsにはパラメータを指定します。
==== Join ====
Sub Join()
メソッド呼び出し元のスレッドを、対象スレッドが終了するまで待機します。


==== Resume ====
==== Resume ====
35行目: 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スレッドは終了しました。"