等待所有任务线程没有任务对象
问题描述:
我有一个应用程序使用.NET 4.0
(所以没有async
/await
可用)。我正在为使用服务调用的方法编写测试。等待所有任务线程没有任务对象
因此,例如,我的测试调用method A
。 Method A
有一个异步服务电话method B
,它返回Task
,我们在ContinueWith
做所有处理。 Method A
什么也没有返回。
问题是,在ContinueWith
有机会完成测试失败之前,主线程到达Assert
呼叫。
目前解决此问题的方法是执行Thread.Sleep(10)
以便ContinueWith
有时间执行。然而,这带来了很多问题,比如浪费时间(当有人陷入数千次测试时,这会加剧测试失败)。
我想知道是否有任何方法可以做一种Thread.WaitAll()
实际上没有Task
对象,因为没有办法得到它们。更改代码不是一个选项,因此必须从测试中完成。
注:我知道的方法来做到这一点,如果我们有Task
/Thread
对象,但我没有与他们接触,所以请不要将其标记为那些重复的,因为它不是。
答
我想知道是否有任何方法可以在没有Task对象的情况下执行某种Thread.WaitAll()方法,因为无法获取它们。
不,没有办法可靠地做到这一点。
+0
直指点。谢谢。 –
我认为你需要在这里做同样的事情,就像你使用'async/await'那样让'Task'冒泡。是否有理由让'Mathod A'无法返回由'ContinueWith'产生的任务,以便调用者可以决定等待呢? – juharr
你不能'方法A'从'ContinueWith'返回'Task'吗? – Euphoric
此外,要指出任务和异步/等待是两个单独的事情。任务是.NET 4.0以来的一部分,可以在不使用异步的情况下使用。它的异步/等待使它更容易使用。 – Euphoric