在silverlight中调用wcf的时间

时间:2010-01-12 17:52:42

标签: wcf silverlight timing

每个人都知道在Silverlight中所有wcf服务调用都是异步的。但是我们可以对请求的时间安排说些什么呢?对于以下代码,服务器在“Hello B”之前是否会收到“Hello A”?

ServiceClient proxy = new ServiceClient();
ServiceClient proxy2 = new ServiceClient();

proxy.SayHelloAsync(“Hello A”);
proxy2.SayHelloAsync(“Hello B”);

我重复运行代码,服务器总是先收到“Hello A”。这只是运气吗?

2 个答案:

答案 0 :(得分:0)

是的,如果你有两个异步调用,你可以让它们中的任何一个完成。

如果你需要等待任何完成,你应该看看WaitHandle

答案 1 :(得分:0)

这只是运气。我已经完成了几乎完全相同的测试,让他们以各种不同的顺序完成。在真实场景中尤其如此,您可能会同时进行大量未完成的调用(例如,在聊天应用程序中)。如果你需要在调用B之前调用A来完成,你需要以某种方式链接它们,并且这样做的机制都不是很干净。根据我的经验,使用某种WaitHandle的建议可能很危险。您的里程可能会有所不同,但我发现如果您不是非常小心,使用WaitHandle来管理WCF调用的时间可以阻止关键线程运行。通过“A”完成时调用的方法调用“B”会更好,但更复杂。