public virtual IMessageCtrl AsyncProcessMessage(IMessage reqMsg, IMessageSink replySink)
{
// This is the case where we take care of returning the calling
// thread asap by using the ThreadPool for completing the call.
// we use a more elaborate WorkItem and delegate the work to the thread pool
ADAsyncWorkItem workItem = new ADAsyncWorkItem(reqMsg,
(IMessageSink)this, /* nextSink */
replySink);
WaitCallback threadFunc = new WaitCallback(workItem.FinishAsyncWork);
ThreadPool.QueueUserWorkItem(threadFunc);
return null;
}