我有一个独特的问题,我无法解决。我有一个Webservice。
webservice中的方法创建一个Worker线程来执行长时间运行的操作。
void KickStartLongRunningOperation()
但问题是多个客户端依赖于此线程的完成。
我还有一个BeginLongRunninOperation(AsyncCallback回调,AsyncState)和EndLongRunningOp ...对WebMethod。
现在所需的行为是,当主工作线程(LongRunningOperation)完成时,应该调用来自不同客户端的所有AsyncCallback。
怎么做?可能吗?为了说明一个呼叫序列:
- 客户1来电 - > void KickStartLongRunningOperation() - >主工作线程启动(只有一个实例)
- 客户1来电 - > BeginXXX提供AsyncCallback作为参数(理想情况下,这应该将此AsyncCallback连接到LongRunning Worker线程的同一实例)
- 客户2来电 - > BeginXXX提供AsyncCallback作为参数(理想情况下,这应该将此AsyncCallback连接到LongRunning Worker线程的同一实例)
- 客户3来电 - > BeginXXX提供AsyncCallback作为参数(理想情况下,这应该将此AsyncCallback连接到LongRunning Worker线程的同一实例)
...
主工作线程完成
- 应调用客户端1实例/线程上的AsyncCallback
- 应该调用客户端2实例/线程上的AsyncCallback
- 应该调用客户端3实例/线程上的AsyncCallback
我想通过APM进行轮询,但我不确定如何将多个AsyncCallbacks从不同的客户端实例连接到同一个工作线程。