「キャンセル処理を利用したタイムアウト(C Sharp)」の版間の差分
ナビゲーションに移動
検索に移動
細 (Wiki がページ「キャンセル処理を利用したタイムアウト」を「キャンセル処理を利用したタイムアウト(C Sharp)」に、リダイレクトを残さずに移動しました) |
細 (文字列「<source lang」を「<syntaxhighlight lang」に置換) |
||
| 5行目: | 5行目: | ||
== サンプルコード == | == サンプルコード == | ||
< | <syntaxhighlight lang="cpp"> | ||
public cancellationTask() | public cancellationTask() | ||
{ | { | ||
2021年11月15日 (月) 00:31時点における版
概要
C#で一定時間内に処理が終わらなければ終了または中断する処理を記載する。
Taskを生成して、一定時間後にキャンセル処理を実行する。
Taskまたはキャンセル処理のいずれかが完了したとき、処理を終了することでタイムアウトが実現できる。
サンプルコード
<syntaxhighlight lang="cpp">
public cancellationTask()
{
var task = Task.Run(() =>
{
// 何か処理
});
var cancellationCompletionSource = new TaskCompletionSource<bool>();
using (var cts = new System.Threading.CancellationTokenSource(1000))
using (cts.Token.Register(() => cancellationCompletionSource.TrySetResult(true)))
{
if (task != await Task.WhenAny(task, cancellationCompletionSource.Task).ConfigureAwait(false))
{
throw new OperationCanceledException(cts.Token);
}
}
}
</source>