You mean the UserState on the server, right? Either you need to write the service so that it can cope with being run concurrently, or wrap the content of that method with lock(UserState){ ... }. (You don't want to use [Synchronized] because it should be able to run concurrently for different users, even if making it work concurrently for the same one is too hard.) Obviously, the first way is preferred. I'm guessing your method is actually not just a 'GetAllXxx' but instead updates some server state, because there should be no problem with doing multiple gets in parallel, and also you would not need to call that multiple times (the result could be cached). Can you explain a bit more about what the service method is doing and why you need to call it multiple times? I would expect that it would be possible to bundle the requests up into a single service call in some way, reducing network traffic as well as reducing your concurrency issues. But you should still write a robust service regarding concurrency.