尝试理解将委托传递给Task.Run()
。根据我的理解,它应该足够了
Task.Run(readDataFromIO)
但我遇到了模糊的调用。好吧,为了解决这个问题,我需要进行类型转换:
Task.Run(Func<double> (readDataFromIO) )
但为什么我需要new
?
Task.Run(new Func<double> (readDataFromIO))
根据我的理解,我已经有了可以使用的功能。
public static Task<double> readDataFromIOAsync()
{
return Task.Run(new Func<double>(readDataFromIO) );
}
public static double readDataFromIO()
{
Thread.Sleep(2000);
Console.WriteLine("rd done");
return 10d;
}
UPD
我已经使用下面的解决方案进行了测试,它运行良好。所以仍然有疑问 - 为什么new
?
return Task.Run((Func<double>)readDataFromIO);