Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
3 / 2 / 1
Регистрация: 13.05.2013
Сообщений: 234
1

Id текущего таска равен Null при использовании await Task.Delay(100);

21.06.2018, 00:19. Показов 1722. Ответов 1
Метки tpl (Все метки)

Author24 — интернет-сервис помощи студентам
Объясните, пожалуйста, почему используя await Task.Delay(100) в таске Task.CurrentId возвращает null?

C#
1
2
3
4
5
Async Task Run()
{
    await Task.Delay(100);
    var currentId = Task.CurrentId;
}
В случае же если использовать Thread.Sleep(100), Task.CurrentId возвращает идентификатор текущей задачи.
C#
1
2
3
4
5
Async Task Run()
{
    Thread.Sleep(100);
    var currentId = Task.CurrentId;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2018, 00:19
Ответы с готовыми решениями:

Как работает await Task.Delay()
await Task.Delay(5000); Зачем используется асинхронность для задержки ?

Как реализовать выход при условие=1 из Task.Delay(-1)?
Есть асинхронный таск, который подписывается на ивент, затем идёт бесконечное ожидание. Для...

Виснет ui при использовании await
Использую mvvm. Есть vm, в ней есть свойство Products (коллекция observable), к ней прибинден...

Проблемы с конструкцией async\await при использовании WPF или Windows Forms
Добрый день! Написал библиотечку, использующую, в том числе конструкции async-await. Всё...

1
1150 / 742 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
21.06.2018, 01:33 2
DEMON_RUS,
Если вы пытаетесь получить значение CurrentId вне кода, выполняемого задачей, свойство возвращает null.
То, что после await будет выполнено вне таска.
Цитата Сообщение от DEMON_RUS Посмотреть сообщение
если использовать Thread.Sleep(100),
тоже выдаст null, ибо вне таски.
Вот так выдаст Id:
C#
1
2
3
4
5
6
7
8
        async Task Run()
        {
            await Task.Run(() =>
            {
                Thread.Sleep(100);
                var currentId = Task.CurrentId;
            });
        }
0
21.06.2018, 01:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.06.2018, 01:33
Помогаю со студенческими работами здесь

Метод Delay в Task
Привет всем. В общем отправляю я запрос с помощью таск. И все работает, только иногда ответ от...

Использование Task Delay
Может кто подскажет ,как правильно использовать метод Task.Delay в C++/CLI Когда пишу ...

Async/Await и Task
В чем разница между Async/Await и Task? и то и другое создает задачу, где и как лучше что...

Task.Delay отказывает в работе
public static async void randr_sleep(TextEdit e, decimal min, decimal max, bool a) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru