Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
DEMON_RUS
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 196
1

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

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

Объясните, пожалуйста, почему используя 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2018, 00:19
Ответы с готовыми решениями:

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

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

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

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

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

1
Lexeq
651 / 540 / 394
Регистрация: 21.01.2014
Сообщений: 1,482
Завершенные тесты: 2
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2018, 01:33

Многопоточность с async/await и Task
Помогите разобраться с многопоточностью, совсем запутался после чтения...

Аналог Thread.Sleep или Task.Delay
Есть ли какой-нибудь аналог функциям Thread.Sleep или Task.Delay ? Мне...

Task.Delay(N).Wait() задерживает выполнение на старте
Суть такова. Если я вместо Task.Delay(100).Wait(); подставлю Thread.Sleep(100)...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru