回答編集履歴

2

ハイパーリンク設定

2021/04/15 00:53

投稿

退会済みユーザー
test CHANGED
@@ -290,7 +290,7 @@
290
290
 
291
291
  マネージド スレッドのキャンセル
292
292
 
293
- https://docs.microsoft.com/ja-jp/dotnet/standard/threading/cancellation-in-managed-threads
293
+ [https://docs.microsoft.com/ja-jp/dotnet/standard/threading/cancellation-in-managed-threads](https://docs.microsoft.com/ja-jp/dotnet/standard/threading/cancellation-in-managed-threads)
294
294
 
295
295
 
296
296
 

1

追記

2021/04/15 00:53

投稿

退会済みユーザー
test CHANGED
@@ -277,3 +277,39 @@
277
277
 
278
278
 
279
279
  ![イメージ説明](cdd848dc151e1ac639985eacef475ce4.jpeg)
280
+
281
+
282
+
283
+ **【追記】**
284
+
285
+
286
+
287
+ キャンセル処理の基本は Microsoft のドキュメント「マネージド スレッドのキャンセル」(URL 下記)に書いてありますので読んでみてください。
288
+
289
+
290
+
291
+ マネージド スレッドのキャンセル
292
+
293
+ https://docs.microsoft.com/ja-jp/dotnet/standard/threading/cancellation-in-managed-threads
294
+
295
+
296
+
297
+ それに書いてありますが、キャンセル処理を実装するための一般的なパターンは以下の通りだそうです。
298
+
299
+
300
+
301
+ 0. CancellationTokenSource クラスのインスタンスを作成する。
302
+
303
+ 0. CancellationTokenSource.Token プロパティで CancellationToken を取得し、キャンセルをリッスンするタスクに渡す。  
304
+
305
+ 0. タスクにはキャンセル通知を適切に処置するコードを実装しておく。
306
+
307
+ 0. CancellationTokenSource.Cancel メソッドを呼び出し、リッスンしているタスクにキャンセルを通知する。
308
+
309
+ 0. キャンセル通知を受けたタスクは、あらかじめ実装されているコードに従ってキャンセル処置を行う。
310
+
311
+  
312
+
313
+
314
+
315
+ タスクがキャンセルの通知を受けとるには、(1) ポーリング、(2) コールバックの登録、(3) 待機ハンドルの待機という方法があるそうです。上のコード例は (1) を使っています。