From ff1020905c53dff65634a7f33a763a5b2f5d8af6 Mon Sep 17 00:00:00 2001 From: Tema Date: Fri, 4 Mar 2016 07:05:42 +0300 Subject: [PATCH] Fixed Reader.cardDetectTask cancellation in the StopCardEvents(): it had hung while in the Visual Studio debugger. --- Smartcard_API/GemCard/Reader.cs | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) 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 }