Я, должно быть, что-то упускаю,

var t2 = new Task<bool>(() =>
         {
             return UserName == "Admin";
         });

bool x = await t2;

bool x = await t2; никогда не завершается, x ничего не получает (хотя я убедился, что UserName равно "Admin"), не знаю точно, что происходит, пожалуйста, кто-нибудь может объяснить меня .

0
AymenDaoudi 9 Окт 2014 в 15:36

2 ответа

Лучший ответ

Вы не приступили к задаче. await будет ждать завершения, но никогда не завершится, если не начнется.

Возможно, вам нужен Task.Run, который создает и начинает задачу? (Я предполагаю, что на самом деле ваша задача делает что-то более полезное ...)

7
Jon Skeet 9 Окт 2014 в 11:38

Нужно запускать задачу, но лучше использовать фабрику задач

Task.Factory.StartNew(() =>
        {
            return UserName == "Admin";
        });

bool x = await t2;

Или используйте Task.Run ()

Task.Run против Factory.StartNew

0
dariogriffo 9 Окт 2014 в 11:43