回答編集履歴
2
ハイパーリンク設定
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
追記
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) を使っています。
|