0

我想检查以确保我调用的方法在方法只返回Task而不是返回时返回 void Task<T>

我有一个辅助方法,它的签名如下所示:

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();
4

1 回答 1

2

我想检查以确保当方法仅返回 Task 而不是 Task 时,我正在调用返回 void 的方法。

这部分问题没有意义。

我只是想确保这是正确的方法,并且会产生相同的效果

会不会有同样的效果?是的。Task不会更改表达式求值、运算符优先级或局部变量的行为方式。

这是对的吗?不,您应该使用await. 否则,您可能会死锁,正如我在 MSDN 文章中所解释的那样。

于 2013-06-06T17:33:23.377 回答