投稿者 mayopee  (社会人) 投稿日時 2020/5/28 21:33:37
るきお様、実験して戴き、ありがとうございます。

結果は提示してもらったコードで100回位、実行してみましたが、僕のより安定はしていますが、
「1」と「2」の列挙が並列実行される場面が2回程、発生しました。

ポイントは、「_cts.Cancelでキャンセルしても、メッセージキューに溜まっている前回の列挙情報が
処理される時間を待つ」ということだと思っているのですが........
るきお様も、Task.Delay(20).Wait()を入れておられますね。
僕の最初のコードでも  SendKeys.SendWait("{ESC}")の後に、Await Task.Delay(1000) と入れていた
のですが、希望動作とならず断念しました。
あとはForループの中で、キャンセルされているか監視のため、Task.Delayを入れられていますね。

ここらが、ポイントだとすると、PC性能に依存し、環境により結果が異なるという話になりそうです。
待機時間を変更して、もう少し、追試してみます。