我有一个应用程序使用.NET 4.0
(所以没有async
/await
可用)。我正在为使用服务调用的方法编写测试。
例如,我的测试调用method A
. 有一个返回 aMethod A
的异步服务调用,我们在. 什么都不返回。method B
Task
ContinueWith
Method A
问题是主线程在有机会完成Assert
之前到达调用,因此测试失败。ContinueWith
目前解决这个问题的方法是这样做Thread.Sleep(10)
,以便ContinueWith
有时间执行。然而,这带来了很多问题,例如浪费时间(当有数百次 - 数千次测试时会加起来)在较慢的机器上测试失败。
我想知道是否有任何方法可以在Thread.WaitAll()
没有实际拥有Task
对象的情况下进行某种操作,因为无法获得它们。更改代码不是一种选择,因此必须从测试中完成。
注意:如果我们有Task
/Thread
对象,我知道执行此操作的方法,但我无权访问它们,因此请不要将其标记为与那些重复的对象,因为它不是。