В настоящее время у меня есть код, в котором цикл while застревает при подключении. IsConnected = true
private bool TryConnect()
{
if (!connection.IsConnected)
{
Monitor.Enter(_syncRoot);
try
{
while (!connection.IsConnected)
{
Thread.Sleep(100);
}
}
finally
{
Monitor.Exit(_syncRoot);
}
}
return true;
}
Поэтому для этого я попытался заменить это на Polly retry, но с Polly он не ждет, и журнал не добавляется.
private bool TryConnect()
{
if (!connection.IsConnected)
{
Monitor.Enter(_syncRoot);
try
{
var policy = Policy.HandleResult<bool>(r => r == false)
.WaitAndRetry(_retryCount, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)),
(ex, time) =>
{
Log.LogInformation(
"retry {TimeOut}s");
}
);
policy.Execute(() => connection.IsConnected);
}
finally
{
Monitor.Exit(_syncRoot);
}
}
return true;
}
Если кто-то может сообщить мне, что я делаю не так с кодом. Это будет действительно полезно