0

Everyone knows that in Silverlight all wcf service calls are asynchronous. But what can we say about the timing of the requests? For the following code, is it always true that "Hello A" will be received by the server before "Hello B"?

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

proxy.SayHelloAsync("Hello A");
proxy2.SayHelloAsync("Hello B");

I ran the code repeatedly and the server always received "Hello A" first. Was it just by luck?

4

2 回答 2

0

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

于 2010-01-12T19:04:25.880 回答
0

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

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

于 2010-01-12T18:03:21.547 回答