Я обычно использую цикл «Втрие», который продолжает пробовать какую -то операцию, пока не преуспела операция, либо не истечет тайм -аут: < /p>
bool success = false
int elapsed = 0
while( ( !success ) && ( elapsed < 10000 ) )
{
Thread.sleep( 1000 );
elapsed += 1000;
success = ... some operation ...
}
< /code>
Я знаю, что есть несколько способов реализовать это, но основной момент заключается в том, что я неоднократно пробую некоторую операцию с соном до успеха или слишком долго не спал в агрегате. Возможно, ввод - это фанк (из Bool) и тайм -аут? Я выбрал подход Sleep (), потому что он был наименее сложным, и я полностью анти-комплексный =) Вот моя (все еще необходимо проверить) Импментация: < /p>
public static bool RetryUntilSuccessOrTimeout( Func task , TimeSpan timeout , TimeSpan pause )
{
if ( pause.TotalMilliseconds < 0 )
{
throw new ArgumentException( "pause must be >= 0 milliseconds" );
}
var stopwatch = Stopwatch.StartNew();
do
{
if ( task() ) { return true; }
Thread.Sleep( ( int )pause.TotalMilliseconds );
}
while ( stopwatch.Elapsed < timeout );
return false;
}
Подробнее здесь: https://stackoverflow.com/questions/662 ... th-timeout
.NET CONSTRUCTE для LICP с тайм -аутом ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Проблема с тайм-аутом веб-сайта при запуске двух одинаковых фоновых служб .NET Core
Anonymous » » в форуме C# - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Проблема с тайм-аутом веб-сайта при запуске двух одинаковых фоновых служб .NET Core
Anonymous » » в форуме C# - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-