This commit is contained in:
Diego
2025-07-31 16:25:47 +08:00
parent d74e0952dc
commit badf61fe01
2 changed files with 18 additions and 27 deletions

View File

@@ -3,7 +3,7 @@
<PropertyGroup>
<PluginVersion>10.9.94</PluginVersion>
<ProPluginVersion>10.9.93</ProPluginVersion>
<DefaultVersion>10.9.98</DefaultVersion>
<DefaultVersion>10.9.99</DefaultVersion>
<AuthenticationVersion>2.9.29</AuthenticationVersion>
<SourceGeneratorVersion>10.9.29</SourceGeneratorVersion>
<NET8Version>8.0.18</NET8Version>

View File

@@ -575,12 +575,25 @@ public abstract class DeviceBase : DisposableObject, IDevice
var sendOperResult = await SendAsync(command, clientChannel, endPoint, cancellationToken).ConfigureAwait(false);
if (!sendOperResult.IsSuccess)
throw sendOperResult.Exception ?? new(sendOperResult.ErrorMessage ?? "unknown error");
return new MessageBase(sendOperResult);
waitData.SetCancellationToken(cancellationToken);
await waitData.WaitAsync(timeout).ConfigureAwait(false);
try
{
waitData.SetCancellationToken(Channel.ClosedToken);
await waitData.WaitAsync(timeout).ConfigureAwait(false);
}
catch (Exception ex)
{
if (cancellationToken.IsCancellationRequested)
{
if (!this.DisposedValue)
{
await Task.Delay(timeout, Channel.ClosedToken).ConfigureAwait(false);
}
}
return new MessageBase(ex);
}
var result = waitData.Check();
if (result.IsSuccess)
{
@@ -588,33 +601,11 @@ public abstract class DeviceBase : DisposableObject, IDevice
}
else
{
if (cancellationToken.IsCancellationRequested && result.Exception is OperationCanceledException)
{
waitData.Reset();
waitData.SetCancellationToken(CancellationToken.None);
await waitData.WaitAsync(timeout).ConfigureAwait(false);
result = waitData.Check();
if (result.IsSuccess)
{
return waitData.WaitResult;
}
else
{
return new MessageBase(result);
}
}
return new MessageBase(result);
}
}
catch (Exception ex)
{
if (cancellationToken.IsCancellationRequested)
{
if (!this.DisposedValue)
{
await Task.Delay(timeout, CancellationToken.None).ConfigureAwait(false);
}
}
return new MessageBase(ex);
}
finally