我想检查以确保在方法只返回Task
而不是Task<T>
时调用返回void的方法。
我有一个帮助方法,它的签名看起来像这样:
internal async static Task DrawLeafMidrail(Graphics dc, float totalHeightFeet, List<HorizontalContainer> horizontals, bool showDetails, bool showVerticalDetails)
{
await Task.Run(() =>
{
float y, sl, startX, endX, stileWidth = 0, btmRailPx = 0, leftJmb;
PointF[] points;
List<VerticalContainer> verticals = new List<VerticalContainer>();
List<LineContainer> lines = new List<LineContainer>();
//..code omitted
});
}
我正在调用Task的帮助方法,如:
Horizontal.DrawLeafMidrail(
dc, doorPoints.BayRect.Height / Constants.PIXELS_PER_FOOT,
lstHors, ,forDoorDetail).Wait();
请注意,我已将.Wait()
附加到调用方的末尾。我只是想确保这是正确的方法,这将具有与调用者调用辅助方法相同的效果:
Task t = Horizontal.DrawLeafMidrail(dc, doorPoints.BayRect.Height / Constants.PIXELS_PER_FOOT, lstHors, i == 0, forDoorDetail);
t.Wait();
答案 0 :(得分:2)
我想检查以确保在方法只返回Task而不是Task时调用返回void的方法。
这部分问题没有意义。
我只是想确保这是正确的方法,这将产生同样的效果
会有同样的效果吗?是。 Task
不会更改表达式评估,运算符优先级或局部变量的行为方式。
这是对的吗?不,您应该使用await
。否则,您could deadlock,正如我在MSDN文章中解释的那样。