尝试创建返回“aaaa”的Task。在下面的情况下,我的结果为null:
public static void caller()
{
Task<string> getStringTask = delayJob();
string urlContents = await getStringTask;
Console.WriteLine(urlContents);
}
public static Task<string> delayJob()
{
Thread.Sleep(1000);
Console.WriteLine("sleep done");
return new Task<string>(()=> "aaaa" );
}
我做错了什么?
答案 0 :(得分:1)
这是更好的选择。如果要异步运行此方法,则不应使用Thread.Sleep
,因为它会阻止调用方法的线程。
public static async Task<string> delayJob()
{
await Task.Delay(1000);
Console.WriteLine("sleep done");
return "aaaa";
}
编辑: 您的示例不会打印任何内容,因为您尚未启动任务。你刚刚创建了它。
EDIT2:
基本上,如果你想避免延迟,你可以这样做但通常应该避免如下所述:https://blog.stephencleary.com/2013/11/taskrun-etiquette-examples-dont-use.html
public static Task<string> delayJob()
{
return Task.Run(()=>"aaaa");
}