如何让代码等待执行,直到其他事件处理程序完成?

lwc*_*uer 1 c#

在下面的代码中,我想使用geometryService(第三方提供的实用程序类)来顺序计算几个形状区域.我失败了,因为第二次区域计算必须等到第一次计算结束.要解决此问题,我可以将第二个区域计算放入完成计算事件处理程序,但代码很乱.有没有更好的方法让我geometryService.AreasAndLengthsAsync(secondShape)等待执行直到geometryService.AreasAndLengthsAsync(firstShape)执行完毕?

Shape firstShape = new Shape();
Shape secondShape = new Shape();

GeometryService geometryService = new GeometryService();
geometryService.AreaAndLengthsCompleted += GeometryService_AreasAndLengthsCompleted;
geometryService.AreasAndLengthsAsync(firstShape);
geometryService.AreasAndLengthsAsync(secondShape);

private void GeometryService_AreasAndLengthsCompleted(object sender, AreasAndLengthsEventArgs args){  }
Run Code Online (Sandbox Code Playgroud)

Sam*_*Axe 6

你可以把每个Shape放在一个Queue<Shape>

然后启动第一个计算,并在完成的处理程序中检查队列中是否有任何其他形状,如果有,则处理它.

此外,您调用的方法是AreasAndLengthsAsync().通过转换,大多数API设计人员将包含名为相同的同步备选方案,而不使用异步部分.所以请寻找AreasAndLengths()替代方案.