Разработка API для тайм-аутов: TimeoutException или логический возврат без параметра out?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Разработка API для тайм-аутов: TimeoutException или логический возврат без параметра out?

Сообщение Anonymous »

Сценарий — RPC через очереди сообщений — поскольку базовый механизм является асинхронным, клиенты должны указать, как долго они хотят ждать ответа, прежде чем истечет время ожидания. Как клиент, какой из этих двух фрагментов кода вы бы предпочли использовать?
Самое важное: как пользователь метода GetResponseTo(), почему >Вы бы предпочли одно другому? Как ваш выбор сделает ваш код более расширяемым, более читаемым, более тестируемым и т. д.?
try
{
IEvent response = _eventMgr.GetResponseTo(myRequest, myTimeSpan);
// I have my response!
}
catch(TimeoutException te)
{
// I didn't get a response to 'myRequest' within 'myTimeSpan'
}

ИЛИ
IEvent myResponse = null;

if (_eventMgr.GetResponseTo(myRequest, myTimeSpan, out myResponse)
{
// I got a response!
}
else
{
// I didn't get a response... :(
}

Для вашей информации, вот текущая реализация GetResponseTo():
public IEvent GetResponseTo(IEvent request, TimeSpan timeout)
{
if (null == request) { throw new ArgumentNullException("request"); }

// create an interceptor for the request
IEventInterceptor interceptor = new EventInterceptor(request, timeout);

// tell the dispatcher to watch for a response to this request
_eventDispatcher.AddInterceptor(interceptor);

// send the request
_queueManager.SendRequest(request);

// block this thread while we wait for a response. If the timeout elapses,
// this will throw a TimeoutException
interceptor.WaitForResponse();

// return the intercepted response
return interceptor.Response;
}


Подробнее здесь: https://stackoverflow.com/questions/824 ... -parameter
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Строго применение тайм -аутов на JVM для произвольного кода?
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Администратор Spring Boot: тонны тайм -аутов
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • OpenTeLemetry-CPP тестовый приложение работает, но тот же код в Times Out Out Out
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • TimeoutException: тайм-аут произошел после 30 000 мс при выборе сервера с помощью CompositeServerSelector.
    Anonymous » » в форуме C#
    0 Ответы
    87 Просмотры
    Последнее сообщение Anonymous
  • Тайм-аут .Net Core клиента RabbitMQ под нагрузкой после обновления RabbitMQ. Потребительское System.TimeoutException
    Anonymous » » в форуме C#
    0 Ответы
    81 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»