Использование CancellationToken для тайм-аута в Task.Run не работает [дубликат]C#

Место общения программистов C#
Anonymous
Использование CancellationToken для тайм-аута в Task.Run не работает [дубликат]

Сообщение Anonymous »

Хорошо, мои вопросы очень просты. Почему этот код не генерирует TaskCancelledException?

static void Main()
{
var v = Task.Run(() =>
{
Thread.Sleep(1000);
return 10;
}, new CancellationTokenSource(500).Token).Result;

Console.WriteLine(v); // this outputs 10 - instead of throwing error.
Console.Read();
}


Но этот работает

static void Main()
{
var v = Task.Run(() =>
{
Thread.Sleep(1000);
return 10;
}, new CancellationToken(true).Token).Result;

Console.WriteLine(v); // this one throws
Console.Read();
}


Подробнее здесь: https://stackoverflow.com/questions/226 ... s-not-work

Вернуться в «C#»