0

我有一个应用程序使用.NET 4.0(所以没有async/await可用)。我正在为使用服务调用的方法编写测试。

例如,我的测试调用method A. 有一个返回 aMethod A的异步服务调用,我们在. 什么都不返回。method BTaskContinueWithMethod A

问题是主线程在有机会完成Assert之前到达调用,因此测试失败。ContinueWith

目前解决这个问题的方法是这样做Thread.Sleep(10),以便ContinueWith有时间执行。然而,这带来了很多问题,例如浪费时间(当有数百次 - 数千次测试时会加起来)在较慢的机器上测试失败。

我想知道是否有任何方法可以在Thread.WaitAll()没有实际拥有Task对象的情况下进行某种操作,因为无法获得它们。更改代码不是一种选择,因此必须从测试中完成。

注意:如果我们有Task/Thread对象,我知道执行此操作的方法,但我无权访问它们,因此请不要将其标记为与那些重复的对象,因为它不是。

4

1 回答 1

1

我想知道是否有任何方法可以在没有实际拥有 Task 对象的情况下执行某种 Thread.WaitAll() ,因为无法获取它们。

不,没有办法可靠地做到这一点。

于 2017-05-09T19:24:31.287 回答