drmz_in_code Ответов: 1

Установите тайм-аут для конкретного метода веб-службы


Привет ,

У меня есть ссылка на веб-службу в моем приложении windows, и эта веб-служба имеет много методов . Я хочу установить разный тайм-аут для разных методов.
например, для метода set TimeOut = 10 сек
methodB set TimeOut = 20 сек

Заранее спасибо :)

Что я уже пробовал:

Hi ,

I am having web service reference in my windows application  and this web service having many methods . I want to set the different  time out for different methods.
for e.g  methodA set TimeOut = 10 sec
         methodB set TimeOut = 20 sec

Thanks in advance :)

1 Ответов

Рейтинг:
2

#realJSOP

Вы не можете установить тайм-аут для каждого метода, но можете сделать что-то вроде того, что описано по этой ссылке:

Создание задачи.Метод TimeoutAfter / параллельное программирование с .NET[^]

Мой поиск в google был "c# timeout with task".

Вот некоторый минимальный код, который может работать для вас:

/// <summary>
/// Times out if the task execution takes longer that the specified number of milliseconds.
/// Up to 596.5 hours of timeout can be specified.
/// </summary>
/// <param name="task">The task to execute</param>
/// <param name="msTimeout">How long to wait for the task to return (&lt;= 0 causes
/// this value to be = int.MaxValue.</param>
/// <returns></returns>
public static async Task TimeoutAfter(this Task task, int msTimeout)
{
    // make sure we have a sane timout value
    msTimeout = (msTimeout <= 0) ? int.MaxValue : msTimeout;
    if (task == await Task.WhenAny(task, Task.Delay(msTimeout)))
    {
        await task;
    }
    else
    {
        throw new TimeoutException();
    }
}