ベストプラクティス:CancellationTokenSource
]の正しい取り扱い CancellationTokenSource
クラスはリリースできますが、その正しいリリース方法は開発者を混乱させることがよくあります。この記事では、そのような種を効果的に放出する時期と方法を詳細に説明します。
この不明瞭さの理由の1つは、 CancellationTokensource
クラスにファイナルライザーがないことです。これは、Garbage Collector(GC)が自動的にリリースできないことを意味します。したがって、トークンソースを明示的にリリースすることが開発者の責任になります。
それにもかかわらず、MSDNで提供されている例はめったにリリースに言及しません。では、推奨される方法は何ですか?
リリース戦略
タスクが完了するのを待つときに「使用」ステートメントを使用します。これにより、タスクが完了した後にトークンソースが自動的にリリースされることが保証されます。
を使用して(cancellationtokensource tokensource = new cancellationtokensource()) { task.run(()=> {}、tokensource.token); } using (CancellationTokenSource tokenSource = new CancellationTokenSource())
{
Task.Run(() => { }, tokenSource.Token);
}
task.run(async()=> { 試す { //タスクコード } ついに { tokensource.dispose(); } }、tokensource.token);
Task.Run(async () =>
{
try
{
// 任务代码
}
finally
{
tokenSource.Dispose();
}
}, tokenSource.Token);
Cancellable Plinq Query:イベントハンドラーを実行することです。
再利用性と複数の使用:
直接リリース:
「使用」ステートメントまたは継続的なイベントハンドラーを使用できない場合、トークンソースが完了したら直接リリースできます:
CancellationTokenSource tokenSource = new CancellationTokenSource();
Task.Run(() => { }, tokenSource.Token);
// ...
tokenSource.Dispose();
インスタンスは、メモリリークを防ぎ、適切なリソース管理を確保するために不可欠です。推奨されるリリース戦略に従うことにより、開発者はコード内のキャンセル操作を効果的に処理できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3