API version 1
- ‐
exec¶
非同期処理タスクを発行します。
非同期処理に渡せるパラメータおよび非同期処理から返すことの出来る戻り値はプリミティブ値のみです。
それ以外の値を渡したり返した場合、自動的にプリミティブ値に変換されます。
注意
非同期処理では下記のような制限事項があります。
非同期処理の呼び元と呼び先では、お互いのオブジェクトやオブジェクトツリーへのアクセスは出来ません。
非同期処理の呼び先では、CRS::Common::Core, CRS::Common::Net, CRS::Option::Windows パッケージなどの非GUIコンポーネントのみが使用可能です。
AsyncTaskを用いた非同期処理の基本的な流れは下記の通りです。
# 非同期処理を行う関数を定義
var func = lambda[](param1, param2) {
Application.sleep(10); # 長い時間がかかる処理
return param1 + param2;
};
# 非同期処理開始
var task = AsyncTask.exec(func, "abc", "def");
# 何らかの時間のかかる処理
Application.sleep(5);
# 結果受け取り
var result = task.get();
MessageBox(result); # コード先頭から概ね10秒程度で"abcdef"が表示される
呼出形式一覧
呼出形式 |
説明 |
---|---|
CRS::Common::Core::AsyncTask exec(reference func[, ... args]) |
非同期処理を開始します。処理結果は戻り値のAsyncTaskオブジェクトから取得します。 |
CRS::Common::Core::AsyncTask exec(reference subscriber, reference func[, ... args]) |
非同期処理を開始します。処理結果はイベントとして通知されます。 |
戻り値一覧
戻り値 |
説明 |
---|---|
CRS::Common::Core::AsyncTask |
非同期処理タスクを管理するAsyncTaskオブジェクト このオブジェクトは非同期処理終了まで何らかの形で保持しておく必要があります。 このオブジェクトが破棄された場合、非同期処理は速やかに中断されます。 |
引数一覧
引数 |
説明 |
---|---|
func |
非同期処理で使用されるラムダ式を指定します。 キャプチャ変数を持つラムダ式は使用出来ません。 ラムダ式内でreturnした戻り値は、自動的にプリミティブ値に変換されます。 |
args |
ラムダ式にに渡すパラメータを指定します。 パラメータには0個以上のプリミティブを渡すことが可能です。 プリミティブ値以外を指定した場合、自動的にプリミティブ値に変換されます。 |
subscriber |
非同期処理結果 購読オブジェクトを指定します。 非同期処理の結果を、Task.TaskProgress , Task.TaskResult イベントとして受け取るオブジェクトを指定します。 |
例外
識別子 |
説明 |
---|---|
SYS-23:5 |
引数が不正です |
CRS::Common::Core::Task-1:1 |
不正なラムダ式です |
関連項目
Task クラス