Не работает асинхронный вызов метода C#

141
11 октября 2019, 14:40

Имеется метод, который внутри себя запускает дважды другой метод, но второй раз асинхронно. И вот внутри Task не срабатывает SaveToDB().. Подскажите, пожалуйста в чём моя ошибка

public IEnumerable<UserFeedPrerender> GetFeedPrerenders(int userId, FilterPaging paging)
    {
        var feedPrerenders = PreRenderFeed(userId, paging);
        Task.Run(() =>
        {
            var fullPrerenders = PreRenderFeed(userId, null);
            SaveToDB(fullPrerenders, userId);
        });
        return feedPrerenders;
    }

 public async void SaveToDB(IEnumerable<UserFeedPrerender> userFeedPrerenderElements, int userId)
    {
        await Task.Run(() => SaveSelectedElementsToDB(userFeedPrerenderElements, userId));
    }
Answer 1

Предположу, что вам надо что то вроде этого

public async Task<IEnumerable<UserFeedPrerender>> GetFeedPrerenders(int userId, FilterPaging paging)
{
    var feedPrerenders = PreRenderFeed(userId, paging);
    await Task.Run(() =>
    {
        var fullPrerenders = PreRenderFeed(userId, null);
        SaveSelectedElementsToDB(fullPrerenders, userId);
    });
    return feedPrerenders;
}

Вариант без асинхронного ожидания (в случае, если вас не волнует ни статус выполнения задачи, ни потенциально возникающие исключения в ней)

public IEnumerable<UserFeedPrerender> GetFeedPrerenders(int userId, FilterPaging paging)
{
    var feedPrerenders = PreRenderFeed(userId, paging);
    Task.Run(() =>
    {
        var fullPrerenders = PreRenderFeed(userId, null);
        SaveSelectedElementsToDB(fullPrerenders, userId);
    });
    return feedPrerenders;
}
READ ALSO
накопление вызовов корутин

накопление вызовов корутин

Есть такая реализация: переходы три перехода между играми, когда мы перешли, срабатывает некий метод с корутиной в 3 секунды, но если очень...

119
Реализовать страницы в winforms

Реализовать страницы в winforms

В окно из бд загружаются данныеНо нужно сделать чтобы загрузилось не все сразу

118
Получение списка кошельков Bitcoin

Получение списка кошельков Bitcoin

Пишу аналог сайта Mnemonic Code Converter на C# Дошел до получения BIP32 Extended Private Key и BIP32 Extended Public KeyИспользую библиотеку NBitcoin

142
DateTime.Hour всегда ли 24?

DateTime.Hour всегда ли 24?

Если брать из любого DateTime часы те

118