2014-10-09 42 views
0

我必须失去了一些东西的工作,等待任务花费永远或完全不

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

bool x = await t2; 

bool x = await t2;是永远不会结束,x没有收到任何东西(而我确信,用户名是等于“管理员“),不知道到底发生了什么,请有人向我解释。

回答

7

您还没有开始任务。 await会一直等到它完成,但如果它没有开始,它永远不会完成。

也许你想要Task.Run,它创建了并开始一个任务? (我假设在现实中,你的任务做更有用的东西......)

+0

即使t2.start()将有助于启动任务,然后等待完成 – 2014-10-09 11:40:00

+2

@MrinalKamboj:确实是这样,但是如果你要创建并立即启动任务,你还不如请首先使用'Task.Run' :) – 2014-10-09 11:40:42

+2

@ Jon Skeet同意,正在尝试最新的当前代码更改:) – 2014-10-09 11:43:44

0

你要开始任务,但最好使用任务工厂

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

bool x = await t2; 

或使用Task.Run()

Task.Run vs Factory.StartNew