我有一个小批处理程序,它的工作是使用各种参数调用 SSRS 2008 Web 服务并路由生成的报告。(由于各种原因,SSRS 订阅无法在此环境中工作。)
目前,它使用Parallel
该类一次运行多个报表,并利用报表服务器处理多个同时请求的能力。但是我已经读到(在这里的评论中)这不是要走的路:因为我们在客户端上跨多个线程传播的是 I/O 而不是处理负载,要做的事情是对 Web 服务进行异步调用并等待结果。
VS 2010 为我生成了一个包含xxxxAsync
方法和xxxxCompleted
事件的 Web 服务客户端。设置几个要调用的方法相对简单,一个调用 Web 服务Render2Async
方法,另一个处理Render2AsyncCompleted
.
但现在我在陌生的领域。首先,这打破了我所有的测试。如何测试异步 Web 服务:通过编写异步测试?我的应用程序是否需要触发自己的 EventCompleted 消息,以便测试可以知道应用程序已完成给定报告并且测试可以继续?
其次,如何防止应用程序过早终止?我已经阅读了WaitHandle
它及其方法,但WaitHandle.WaitAll
假设您可以访问所有任务的等待句柄,并且 Web 服务客户端没有公开任何等待句柄。该Render2Async
方法没有返回值。
非常感谢。