C#: Собеседование .NET 2021. Каверзные вопросы: Как завершать Task принудительно? - видео HD

C#: Собеседование .NET 2021. Каверзные вопросы: Как завершать Task принудительно? - видео
00:15:45
Обнаружено блокирование рекламы на сайте

Для существования нашего сайта необходим показ рекламы. Просим отнестись с пониманием и добавить сайт в список исключений вашей программы для блокировки рекламы (AdBlock и другие).

12n.ru 18816 роликов

Собеседование .NET 2021. Каверзные вопросы: Как завершать Task принудительно? - видео.

Разбираем вопросы которые задают на собеседованиях. В данном цикле будут разобраны 10 вопросов, собранных в 8-ми коротких видеороликах. В первом видео разбираем как завершить Task в .NET.


Мы в Telegram: t.me/platinum_tech_talks
Чат для общения и вопросов: t.me/platinum_chat
RSS
semen083
04:49
06:40 зачем Вы сделали задержку Task.delay() через getawaiter, если у Вас метод Main является Task? Await Task.Delay() вполне бы отработало.
Vlad
21:21
Тема вообще не раскрыта
1. Task Run гарантировоно запускается в другом потоке (в потоке отличном от того, где Task Run был вызван, обычно запукается для вычистения CPU-bound операций), берется данный поток из пулла потоков, ставит в очередь делегат который мы передали и запускает его.
2. Task Run, кстати говоря сам имеет перегрузку с агрументом CancellationToken и сделано это для того, чтобы отменить задачу кооперативно, то есть перед тем как Task Run будет запускать переданный делегат на пуле потоков, он сам вначале проверит переданный CancellationToken, а именно, не был ли он уже отменен и кинет исключение, если это так, что может сэкономить кучу времени на случай если операция длительная и сложная.

Вот пример:
static async Task Main(string[] args)
{

try
{
var cts = new CancellationTokenSource();
var token = cts.Token;

// отменяем пока еще не выполняется сам делегат
cts.Cancel();

var task = Task.Run(() => ToDoAsync(token));

// если не пробросить token и в Task Run вторым агрументом
// то на этом этапе task.IsCanceled вернет false, хотя задача уже явно
// была отменена давно и в методе ToDoAsync придеться ждать 60 сек
// пока кинется исключение отмены
if (task.IsCanceled)
{
Console.Write(«Canceled»);
}

await task;

}
catch (OperationCanceledException e)
{
Console.WriteLine(e);
}
}

public static async Task ToDoAsync(CancellationToken token)
{
await Task.Delay(60000);
token.ThrowIfCancellationRequested();
}

3. В методе Process в Task.Delay() так же нужно прокинуть token, по той же причине что и выше.

Новости

Промышленный ИИ в MENA: от пилотов к масштабной эксплуатации с требованием ROI за 3–5 лет Сбер автоматизировал клиентский сервис на Platform V Flow и GigaChat «Национальная Страховая Информационная Система» перешла на «СёрчИнформ КИБ» для защиты конфиденциальных данных Эксперт «СёрчИнформ» расскажет, как безопасно внедрить ИИ в компании на бизнес-конференции в Кибердоме ​ В Новосибирске пройдет конференция по ИИ и кибербезопасности

Промышленный ИИ в MENA: от пилотов к масштабной эксплуатации с требованием ROI за 3–5 лет


3 дня назад
Промышленный ИИ в MENA: от пилотов к масштабной эксплуатации с требованием ROI за 3–5 лет
Промышленный ИИ в MENA: от пилотов к масштабной эксплуатации с требованием ROI за 3–5 лет
Сбер автоматизировал клиентский сервис на Platform V Flow и GigaChat
Сбер автоматизировал клиентский сервис на Platform V Flow и GigaChat
«Национальная Страховая Информационная Система» перешла на «СёрчИнформ КИБ» для защиты конфиденциальных данных
«Национальная Страховая Информационная Система» перешла на «СёрчИнформ КИБ» для защиты конфиденциальных данных
Эксперт «СёрчИнформ» расскажет, как безопасно внедрить ИИ в компании на бизнес-конференции в Кибердоме
Эксперт «СёрчИнформ» расскажет, как безопасно внедрить ИИ в компании на бизнес-конференции в Кибердоме
​ В Новосибирске пройдет конференция по ИИ и кибербезопасности
​ В Новосибирске пройдет конференция по ИИ и кибербезопасности