我想以非阻塞的方式从另一个Web服务调用Web服务。我已经使用BackgroundWorker实现了这一点。但是,我不确定这是否是最佳方式。
情境: 我称之为Web服务Service_A执行某项任务&必须通知另一个Web服务Service_B有关所做的更改。我将Service_B的单向函数NotifyUpdates称为处理更新。 Service_A不等待Service_B的响应&继续其任务。 Service_B的响应记录在后台。
我的问题是,最好的方法是什么?
感谢。
答案 0 :(得分:2)
BackgroundWorker的目的是用于UI,我不认为这是在这里使用它的最佳方式。
如果您使用.Net 4更好地使用Task
var t = Task.Factory.StartNew(() => DoServiceBCall());
如果没有,请使用ThreadPool.QueueUserWorkItem或Thread
ThreadPool.QueueUserWorkItem(new WaitCallback(DoServiceBCall));
希望这有帮助
答案 1 :(得分:0)
首先,根据您的场景,如果对服务B的调用是一种方式,服务A将不会从服务-B接收任何响应,除了Http状态代码(如果调用服务-B在Http上)。
我会异步调用Service-B来保持事物和代码的简单。
HTH, 阿米特