Regardind this solution http://stackoverflow.com/questions/494463/using-the-ccr-with-asynchronous-wcf-service
Why do you need to do this :
ThreadPool.QueueUserWorkItem(s => callback(this));
instead of just calling callback(this) ?
Isn't QueueUserWorkItem going to use yet another thread ?