Вызов вложенных async методов

88
09 февраля 2022, 23:40
internal async Task<Something> InitSomethingAsync()
{
    return await _some.SetSomethingFlags(SomethingtFlagsAsync(_sportDataDays));
}
public async Task<EventPropertiesFilter> SetSomethingFlags(Task<HashSet<ValueTuple<long, int>>> paramTask)
{
    _fieldValue = _fieldValue ?? await paramTask;
    return this;
}
public async Task<HashSet<ValueTuple<long, int>>> SomethingtFlagsAsync()
{
    return await _cache.GetCacheItemAsync<HashSet<ValueTuple<long, int>>>(async () => await GetSomething());
}

Внутри GetCacheItemAsync используется 'copy-past' реализация SemaphorSlim, _useCount которого будет равен 1 если метод SetSomething вызывать два раза, ибо _fieldValue уже проинициализировано. Т.е занятый семафор будет в таком состоянии до завершения запроса. Не очень понятна причина.

Семафор используется в рамках using блока и если я правильно понимаю реализацию, то по окончанию этого блока, семафор должен быть удален из общего словаря:

private void Release(SemaphoreWrapper wrapper)    
{   
    lock (_lock)  
    {
        var isEmpty = wrapper.Release();
        if (!isEmpty) 
            return; 
        _wrapperMap.Remove(wrapper.Key);
    }
}

UPD. Сомнительное условие и прочий код был переписан, но тем не менее хотелось бы иметь больше понимания о возникшей проблеме.

READ ALSO
HTML CSS Установить размер внутреннего div в зависимости от размера внешнего

HTML CSS Установить размер внутреннего div в зависимости от размера внешнего

У меня есть div, внутри которого три div'a установленных вертикальноИ я хочу к примеру сделать первый блок 25% от ширины внешнего div, второй 25% и третий...

99
Почему модальное окно прижимает или фиксирует к верху

Почему модальное окно прижимает или фиксирует к верху

У меня на сайте модальные окнаА так же в них есть по всплывающему окну с формой

85
Переменные в css, как считать calc

Переменные в css, как считать calc

Я хочу, используя переменную var(--a) посчитать значение var(--b) Я хочу из 4 rem, которые в переменной var(--a) получить -47rem в переменной var(--b), но css что-то...

82
БД на html без php

БД на html без php

как можно сделать регистрацию и авторизацию без php только на javascript,html,css и все?

80