title: Why does my BeginInvoke run synchronously
body: <p>I have created a WCF application and in multiple places I am using BeginInvoke to run methods asynchronously. In some places it is asynchronous and in others it runs synchronously. Because the system is quite complicated I was hoping to just throw this high level question out there in the hope that someone knows a reason that BeginInvoke would be forced into synchronous running.</p>
  
  <p>Possible reasons I have considered and believe are not the cause:</p>
  
  <ul>
  <li>I ran out of ThreadPool Threads - I think at peak I use less than 20 threads.</li>
  <li>I use locking across those threads stopping their concurrent executions - No synchronization is employed since each call is to a method on a separate WCF ServiceHost</li>
  <li>A parent asynchronous method (which definitely is running asynchronously) calls many child BeginInvokes and you can't nest asynchronous invocations - I don't think that is a limitation</li>
  <li>The parent asynchronous method is itself part of a WCF ServiceHost that is InstanceContextMode.PerSession and there is some limitation on it nesting asynchronous calls - Again, I don't think so, but FYI</li>
  <li>Each child being called is a (different to the parent) WCF ServiceHost whose method I am calling is an instance of the same ServiceType and is run as InstanceContextMode.Single and ConcurrencyMode.Single. - Does that in some way impact the calling routine from running those asynchronously (I don't see why it would, but just in case) </li>
  </ul>
  
  <p>Any ideas/solutions are much appreciated</p>