Как правильно блокировать повторный запуск асинхронной функции ? - C#

Узнай цену своей работы

Формулировка задачи:

Допустим есть асинхронная функция, вызываемая по нажатию кнопки пользователем. Функция не быстрая, ходит по http Как можно запретить вызывать её дважды ? Достаточно для этого устанавливать какой нибудь флаг при входе в функцию, например IsLoading и если флаг установлен, вываливаться из функции ? Нормально это будет работать в многопоточном приложении ?

Решение задачи: «Как правильно блокировать повторный запуск асинхронной функции ?»

textual
Листинг программы
static int _isLoading;
void YourMethodSinglenton()
{
    if (Interlocked.CompareExchange(ref _isLoading, 1, 0) == 0)
    {
        // body
        Interlocked.Exchange(ref _isLoading, 0);
    }
}

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы