If you host the service yourself in a UI application with the default service behavior configured, you are likely to see the behavior you are describing. The default behavior of the service uses a synchronization context. If the service host starts in the user interface thread (WinForms, WPF), all requests are sent to the general Windows message loop => all requests are processed sequentially through the user interface thread.
In any other case (including manually configuring [ServiceBehavior(UseSynchronizationContext = false)] for services hosted in a user interface thread), the service node sends a new thread from the thread pool for each request. There are a few more differences based on instance context mode and concurrency mode, but with the default settings you will see the behavior that I described.
source share