void OnProcessingCommand(BasicCommandWithThreadId sender, ResponseCompleteEvent e)
 {
     Console.WriteLine("OnProcessingCommand Id:{0} T:{1}- IsThreadPool {2}", e.Id, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread);
 }
        static void Main(string[] args)
        {
            var myParam = new MyParam { Id = 1, };
            var basicCommandWithThreadId = new BasicCommandWithThreadId();

            var actions = System.Linq.Enumerable.Range(0, 20).Select(i => new { Id = i, ActionToInvoke = new Action(() => basicCommandWithThreadId.SendCommand(new MyParam { Id = i, })) });
            foreach (var a in actions)
            {
                Console.WriteLine("Starting {0}", a.Id);
                a.ActionToInvoke();
            }

            Console.ReadLine();
        }