/// <summary>結果を符号なし整数として取得します。</summary> /// <returns>呼び出し結果</returns> public ulong GetUInt64(ulong def) => QiApiFuture.GetUInt64Default(this, def);
/// <summary>エラーがある場合、それを文字列として取得します。</summary> /// <returns>エラーを表す文字列</returns> public string GetError() => QiApiFuture.GetError(this);
/// <summary>結果を符号つき整数として取得します。</summary> /// <returns>呼び出し結果</returns> public long GetInt64(long def) => QiApiFuture.GetInt64Default(this, def);
/// <summary>コピーを生成します。</summary> /// <returns>コピーされたインスタンス</returns> public QiFuture CloneFuture() => QiApiFuture.Clone(this);
/// <summary>一般的な処理結果を取得します。</summary> /// <returns> /// 呼び出し結果。 /// 処理の完了待機が適切に行われていない場合、例外が生じる可能性があります。 /// </returns> public QiValue GetValue() => QiApiFuture.GetValue(this);
/// <summary>結果取得をキャンセルします。</summary> public void Cancel() => QiApiFuture.Cancel(this);
/// <summary>インスタンスを破棄します。</summary> public void Destroy() => QiApiFuture.Destroy(this);
/// <summary> /// エラーが起きたかどうかを待機しつつ確認します。 /// </summary> /// <param name="timeout">待機時間の上限(ミリ秒)</param> /// <returns>エラーの有無</returns> public bool CheckHasError(int timeout) => QiApiFuture.HasError(this, timeout);
/// <summary> /// 値を持っているかどうかを待機ののち確認します。 /// </summary> /// <param name="timeout">待機時間の上限(ミリ秒)</param> /// <returns>値の所持の有無</returns> public bool CheckHasValue(int timeout) => QiApiFuture.HasValue(this, timeout);
/// <summary> /// 指定した時間まで待機します。 /// </summary> /// <param name="timeout">待機時間の上限(ミリ秒)</param> /// <returns>待機後の、このインスタンス自身</returns> public QiFuture Wait(int timeout) { QiApiFuture.Wait(this, timeout); return(this); }
/// <summary>(動作未確認)動作完了時のコールバック関数を登録します。</summary> /// <param name="cb">コールバック関数</param> public void AddCallback(Action <QiFuture> cb) { var apiCallback = new QiApiFutureCallback((fut, udata) => cb(new QiFuture(fut))); QiApiFuture.AddCallback(this, apiCallback); }
//NOTE: これさ、アンマネージに渡したapiCallbackがGCされて死ぬよくあるパターンでは? /// <summary>(動作未確認)動作完了時のコールバック関数を登録します。</summary> /// <param name="cb">コールバック関数</param> /// <param name="userData">ユーザーデータ</param> public void AddCallback(Action <QiFuture, IntPtr> cb, IntPtr userData) { var apiCallback = new QiApiFutureCallback((fut, udata) => cb(new QiFuture(fut), udata)); QiApiFuture.AddCallback(this, apiCallback, userData); }
/// <summary>結果を<see cref="QiObject"/>として取得します。</summary> /// <returns>呼び出し結果</returns> public QiObject GetObject() => QiApiFuture.GetObject(this);
/// <summary>結果を文字列として取得します。</summary> /// <returns>呼び出し結果</returns> public string GetString() => QiApiFuture.GetString(this);