Callbacks and Synchronization Contexts
Like a service invocation, a callback may need to access
resources that rely on some kind of thread(s) affinity. In addition, the callback instance
itself may require thread affinity for its own use of the TLS, or for
interacting with a UI thread. While the callback can use techniques such as
those in Example 8-4 and
Example 8-5 to marshal
the interaction to the resource synchronization context, you can also
have WCF associate the callback with a
particular synchronization context by setting the Use
Synchronization
Context
property to true
. However, unlike the service, the client
does not use any host to expose the endpoint. If the UseSynchronizationContext
property is true
, the synchronization context to use is
locked in when the proxy is opened (or, more commonly, when the client
makes the first call to the service using the proxy, if Open()
is not explicitly called). If the
client is using the channel factory, the synchronization context to use
is locked in when the client calls CreateChannel()
. If the calling client thread
has a synchronization context, this will be the synchronization context
used by WCF for all callbacks to the client’s endpoint associated with
that proxy. Note that only the first call made on the proxy (or the call
to Open()
or CreateChannel()
) is given the opportunity to determine the synchronization context. Subsequent calls have no say in the matter. If the calling client thread has no synchronization context, even ...
Get Programming WCF Services, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.