我有一个使用.NET 4.0
的应用程序(因此没有async
/ await
可用)。我正在为使用服务调用的方法编写测试。
例如,我的测试调用method A
。 Method A
对method B
进行异步服务调用,返回Task
,我们会在ContinueWith
中执行所有处理。 Method A
不返回任何内容。
问题是主线程在Assert
有机会完成之前到达ContinueWith
调用,因此测试失败。
目前解决此问题的方法是Thread.Sleep(10)
,以便ContinueWith
有时间执行。然而,这会带来很多问题,例如浪费时间(在有猎人的情况下会增加数千次测试),以便在较慢的机器上进行测试失败。
我想知道是否有任何方式可以做Thread.WaitAll()
而没有实际拥有Task
个对象,因为无法获取它们。更改代码不是一个选项,因此必须从测试中完成。
注意:如果我们有Task
/ Thread
个对象,我知道这样做的方法,但是我无法访问它们,所以请不要将它标记为副本因为它不是。
答案 0 :(得分:1)
我想知道是否有任何方法可以执行某种Thread.WaitAll()而不实际拥有Task对象,因为没有办法获取它们。
不,没有办法可靠地做到这一点。