目次
キャンセルトークンを作成します
トークンをタスクに渡します
キャンセルを要求します
非同期メソッドのキャンセルへの応答
ホームページ バックエンド開発 C#.Net チュートリアル C#でキャンセルトークンを作成して使用する方法は?

C#でキャンセルトークンを作成して使用する方法は?

Sep 21, 2025 am 01:49 AM
c#

CREATE CANCELLATIONTOKENSOURCE CANCELLATIONTOKENを取得し、他のスレッドまたはコンポーネントに通知して操作をキャンセルするために使用されます。 2。トークンをキャンセル(task.runなど)をサポートする非同期方法に渡します。タスクは、キャンセル要求を定期的にチェックして、優雅な終了を達成することができます。

C#でキャンセルトークンを作成して使用する方法は?

C#でキャンセルが鳴ると、1つのスレッドまたはコンポーネントから他の場所で実行されている操作に合図することができます。これは、長期にわたるまたは非同期のタスクを優雅にキャンセルするために不可欠です。適切に作成して使用する方法は次のとおりです。

キャンセルトークンを作成します

トークンは通常、キャンセル要求のライフサイクルを管理するCancellationTokenSourceを介して作成されます。

  • CancellationTokenSourceオブジェクトを作成します。
  • トークンプロパティを介してトークンを取得します。
  • このトークンをキャンセルをサポートする方法に渡します。

例:

 CancellationTokensource cts = new CancellationTokenSource();<br>キャンセルトークントークン= cts.token;

トークンをタスクに渡します

.netのほとんどの非同期メソッド( task.run 、またはhttpclient、streamなどのメソッドなど)は、キャンセルがパラメーターとして受け入れます。

  • 操作を開始するときにトークンを渡します。
  • 操作は、キャンセルが要求されているかどうかを定期的に確認できます。

Task.runの例:

タスクタスク= task.run(()=><br> {<br> for(int i = 0; i <100; i)<br> {<br> if(token.iscancellationrequested)<br> {<br> console.writeLine( "操作キャンセル。");<br> 戻る;<br> }<br> console.writeline($ "working ... {i}%");<br> thread.sleep(100);<br> }<br> }、token);

キャンセルを要求します

操作をキャンセルするには、 CancellationTokenSourcecancel()を呼び出します。

  • これにより、トークンのiScancellationがtrueに再起動します。
  • タスクに停止を強制しません。操作はトークンをチェックし、適切に応答する必要があります。

例:

 // 2秒後にキャンセルします<br>Thread.Sleep(2000);<br> cts.cancel();

Cancelafter()を使用してキャンセルを自動的にスケジュールすることもできます。

 cts.cancelafter(2000); // 2秒でキャンセルします

非同期メソッドのキャンセルへの応答

Asyncコードでは、標準パターンに従うためにキャンセルが検出されたときにOperationCanceleDexceptionを投げます。

例:

 asyncタスクdoworkasync(CancellationTokenトークン)<br> {<br> for(int i = 0; i <100; i)<br> {<br> token.throwifcancellationrequested();<br> await task.delay(100、token); //遅延トークンを尊重します<br> }<br> }

ThrowifCancellationRequested()を使用すると、適切な例外処理が保証され、タスクAsync/awaitとよく統合されます。

基本的に、 CancellationTokenSourceを使用してキャンセルを作成およびトリガーし、トークンを操作に渡し、定期的にチェックして優雅なシャットダウンを可能にします。これは協力モデルです。受信コードは参加する必要があります。それが安全で予測可能なままである方法です。

以上がC#でキャンセルトークンを作成して使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

ユニティゲーム開発:C#は3D物理エンジンとAIの動作ツリーを実装しています ユニティゲーム開発:C#は3D物理エンジンとAIの動作ツリーを実装しています May 16, 2025 pm 02:09 PM

Unityでは、3D物理エンジンとAIの動作ツリーをC#を通じて実装できます。 1. rigidbodyコンポーネントとaddforceメソッドを使用して、スクロールボールを作成します。 2。動作を通じて、パトロールやChaseplayerなどのツリーノードを介して、AIキャラクターはプレーヤーをパトロールして追いかけるように設計できます。

C#.NET開発者のコ​​ミュニティ:リソースとサポート C#.NET開発者のコ​​ミュニティ:リソースとサポート May 06, 2025 am 12:11 AM

C#.NET開発者コミュニティは、次のような豊富なリソースとサポートを提供します。1。Microsoftの公式文書、2。StackoverflowやRedditなどのコミュニティフォーラム、3。Githubのオープンソースプロジェクト。これらのリソースは、開発者が基本的な学習から高度なアプリケーションまでプログラミングスキルを向上させるのに役立ちます。

C#およびC:さまざまなパラダイムの探索 C#およびC:さまざまなパラダイムの探索 May 08, 2025 am 12:06 AM

C#とCの主な違いは、メモリ管理、多型の実装、パフォーマンスの最適化です。 1)C#はゴミコレクターを使用してメモリを自動的に管理し、Cは手動で管理する必要があります。 2)C#は、インターフェイスと仮想方法を介して多型を実現し、Cは仮想関数と純粋な仮想関数を使用します。 3)C#のパフォーマンスの最適化は、構造と並列プログラミングに依存しますが、Cはインライン関数とマルチスレッドを通じて実装されます。

C#は例外をどのように処理しますか?また、トライキャッチ式ブロックのベストプラクティスは何ですか? C#は例外をどのように処理しますか?また、トライキャッチ式ブロックのベストプラクティスは何ですか? Jun 10, 2025 am 12:15 AM

C#は、試行、キャッチ、最後にブロックすることにより、構造化された例外処理メカニズムを実装します。開発者は、可能なエラーコードをTryブロックに配置し、特定の例外(IOException、sqlexceptionなど)をキャッチブロックにキャッチし、最終的なブロックでリソースクリーニングを実行します。 1.深刻なエラーを隠し、デバッグ効率を改善することを避けるために、一般的な例外(例外など)の代わりに特定の例外をキャッチする必要があります。 2。パフォーマンスクリティカルコードで過剰使用のトライキャッチを避けてください。事前に条件を確認したり、代わりにTryParseなどの方法を使用したりすることをお勧めします。 3.常に最終的にブロックされるか、ステートメントを使用して、ファイル、接続などが正しく閉じられていることを確認してください。

C#.NET現代世界:アプリケーションと産業 C#.NET現代世界:アプリケーションと産業 May 08, 2025 am 12:08 AM

C#.NETは、ゲーム開発、金融サービス、モノのインターネット、クラウドコンピューティングの分野で現代世界で広く使用されています。 1)ゲーム開発では、C#を使用してUnityエンジンを介してプログラムします。 2)金融サービスの分野では、C#.NETが高性能取引システムとデータ分析ツールの開発に使用されます。 3)IoTおよびクラウドコンピューティングに関して、C#.NETはAzure Servicesを通じてサポートを提供して、デバイス制御ロジックとデータ処理を開発します。

C#コードの実行における共通言語ランタイム(CLR)の役割は何ですか? C#コードの実行における共通言語ランタイム(CLR)の役割は何ですか? Jun 09, 2025 am 12:15 AM

CLRは、コード実行、メモリ管理、セキュリティ、例外処理を担当するC#コードを実行するランタイムエンジンです。そのワークフローは次のとおりです。1。C#ソースコードは、最初に中間言語(IL)にコンパイルされます。 3. CLRは、Garbage Collector(GC)を介してメモリを自動的に管理し、オブジェクトメモリを割り当て、フリーし、ファイナライザーの使用をサポートし、ステートメントを使用して管理されていないリソースを処理します。 4. CLR力の安全性のタイプ、ILコードを検証して一般的なエラーを防止し、必要に応じて安全でないコードブロックを許可します。 5。例外処理はCLRによって均一に管理され、トライカッチ式構造を採用します

C#のtask.runとtask.factory.startnewの違いは何ですか? C#のtask.runとtask.factory.startnewの違いは何ですか? Jun 11, 2025 am 12:01 AM

C#では、task.runは単純な非同期操作により適していますが、task.factory.startnewは、タスクスケジューリングを細かく制御する必要があるシナリオに適しています。 task.runは、バックグラウンドスレッドの使用を簡素化し、デフォルトでスレッドプールを使用し、CPU集約型タスクの「送信と忘却」に適したコンテキストをキャプチャしません。一方、task.factory.startnewは、タスクスケジューラーの指定、トークンのキャンセル、タスク作成オプションなど、より多くのオプションを提供します。これは、複雑な並列処理またはカスタムスケジューリングが必要なシナリオに使用できます。 2つの動作の違いは、タスクの継続とサブタスクの動作に影響する可能性があるため、実際のニーズに応じて適切な方法を選択する必要があります。

C#.NETで開発:実用的なガイドと例 C#.NETで開発:実用的なガイドと例 May 12, 2025 am 12:16 AM

C#と.NETは、強力な機能と効率的な開発環境を提供します。 1)C#は、CのパワーとJavaのシンプルさを組み合わせた最新のオブジェクト指向プログラミング言語です。 2).NETフレームワークは、複数のプログラミング言語をサポートするアプリケーションを構築および実行するためのプラットフォームです。 3)C#のクラスとオブジェクトは、オブジェクト指向プログラミングの中核です。クラスはデータと動作を定義し、オブジェクトはクラスのインスタンスです。 4).NETのゴミ収集メカニズムは、開発者の作業を簡素化するためにメモリを自動的に管理します。 5)C#および.NETは、同期および非同期プログラミングをサポートする強力なファイル操作関数を提供します。 6)一般的なエラーは、デバッガー、ロギング、例外処理を通じて解決できます。 7)パフォーマンスの最適化とベストプラクティスには、StringBuildの使用が含まれます

See all articles