Всем известно, что в Silverlight все вызовы службы wcf являются асинхронными. Но что мы можем сказать о сроках запросов? Для следующего кода всегда верно, что «Hello A» будет получен сервером до «Hello B»?Сроки вызова wcf в silverlight
ServiceClient proxy = new ServiceClient();
ServiceClient proxy2 = новый ServiceClient();
proxy.SayHelloAsync ("Hello A");
proxy2.SayHelloAsync ("Hello B");
Я запустил код повторно, и сервер всегда получал «Привет A». Это просто удача?
Я согласен с вашим анализом WaitHandle, ему нужно больше заботиться. Во многих случаях вы, вероятно, правы, что цепочка лучше, однако, может стоить дорого, если бы оба вызова могли работать параллельно. Используя пару waithandles на специально выделенном Background thread (1.e, который не имеет ничего другого критического todo), должен быть достаточно простым. – AnthonyWJones
Это тоже мое понимание, но я также знаю, что Silverlight иногда делает некоторые странные вещи, маршируя вызовы WCF на поток пользовательского интерфейса. В последний раз, когда я пытался упростить свой код, используя псевдосинхронный шаблон с ManualResetEvent, я не мог заставить его работать надежно: вызовы никогда не вернутся. Но я не помню точного подхода, который я принимал, и того, кто больше разбирается в проблемах с потоками, чем мне, может быть, повезло больше :-). –