diff --git a/Smartcard_API/GemCard/Reader.cs b/Smartcard_API/GemCard/Reader.cs index 472506b..9a9ead3 100644 --- a/Smartcard_API/GemCard/Reader.cs +++ b/Smartcard_API/GemCard/Reader.cs @@ -142,31 +142,22 @@ public void StopCardEvents() #else if (cardDetectTask != null) { - bool stopped = false; - if (cardDetectTask.Status == TaskStatus.Running) { cancellationTokenSource.Cancel(); - do + try { - Thread.SpinWait(20000); - - if (cardDetectTask.Status == TaskStatus.Canceled) - { - stopped = true; - } - - if (cardDetectTask.Status == TaskStatus.RanToCompletion) - { - stopped = true; - } + cardDetectTask.Wait(); + } + catch + { + if (!cardDetectTask.IsCanceled) + throw; } - while (!stopped); - - cardDetectTask.Dispose(); - cardDetectTask = null; } + cardDetectTask.Dispose(); + cardDetectTask = null; } #endif }