Я использую очень часто RIA WCF Services, и я вставляю тот же контекст в несколько ViewModel. Моя проблема заключается в том, что, как вы знаете, контекст служб RIA не является потокобезопасным.Thread safe, Silverlight
Так что я принимаю решение «для дома» для синхронизации. Я использую фоновые рабочие, и используя PostSharp, я применяю свой атрибут [UniqueThread («Данные»)] по методу и voila.
Я что-то усложняю? Существуют ли более простые решения?
С наилучшими пожеланиями,
Винсент BOUZON
Это не так уж сложно. Но, например, объект, созданный для служб RIA, не должен выполняться в потоке пользовательского интерфейса, он занимает слишком много времени, после чего пользовательский интерфейс блокируется. Итак, все, что касается контекста RIA, работающего на фоновом потоке, и мой пользовательский интерфейс более жидкий. –
Я сделал аналогичные вещи в своих проектах, где я перемещаю всю связь WCF с фоновыми потоками, используя ThreadPool.QueueUserWorkItem(). Это не так много, что он ускоряет работу, так как делает интерфейс более плавным. Но тогда я в основном делаю то, что отвечает HiTech Magic, а именно, использовать Dispatcher.BeginInvoke() для маршалирования данных обратно в поток пользовательского интерфейса, когда это необходимо. Но я не пользуюсь услугами RIA, поэтому мне не пришлось беспокоиться о синхронизации доступа к его контексту. Будет ли простой объект блокировки (например, «lock (myRiaContext) {}») предоставить вам необходимую синхронизацию? –
Да, конечно, я также использую блокировку в том, что вводит PostSharp. –