Merge pull request #24 from MB512/fix/deadlock

Fix deadlock on connection lost
This commit is contained in:
DarthAffe authored and GitHub committed 2021-11-03 23:35:10 +01:00
commit 1419ed7755
1 file changed
+14 -2
+14 -2
View File
@@ -217,11 +217,23 @@ namespace OBD.NET.Common.Devices
else
Connection.Write(Encoding.ASCII.GetBytes(CurrentCommand.CommandText));
//wait for command to finish
_commandFinishedEvent.WaitOne();
//wait for command to finish or command canceled
while (!(_commandFinishedEvent.WaitOne(50) || _commandCancellationToken.IsCancellationRequested))
{
}
}
}
catch (OperationCanceledException) { /*ignore, because it is thrown when the cancellation token is canceled*/}
// if canceled set all commands as completed (with null result)
if (_commandCancellationToken.IsCancellationRequested)
{
CurrentCommand?.CommandResult.WaitHandle.Set();
foreach (var cmd in _commandQueue)
{
cmd.CommandResult.WaitHandle.Set();
}
}
}
}