public void TestExecutionInThreadPool() {
      TestCallbackProvider callbackProvider = new TestCallbackProvider();

      ThreadCallbackOperation test = new ThreadCallbackOperation(
        new ThreadStart(callbackProvider.Callback), true
      );

      Assert.IsFalse(test.Ended);
      Assert.IsFalse(callbackProvider.Called);
      test.Start();
      test.Join();
      Assert.IsTrue(test.Ended);
      Assert.IsTrue(callbackProvider.Called);
    }
        public void TestExecutionInExplicitThread()
        {
            TestCallbackProvider callbackProvider = new TestCallbackProvider();

            ThreadCallbackOperation test = new ThreadCallbackOperation(
                new ThreadStart(callbackProvider.Callback), false
                );

            Assert.IsFalse(test.Ended);
            Assert.IsFalse(callbackProvider.Called);
            test.Start();
            test.Join();
            Assert.IsTrue(test.Ended);
            Assert.IsTrue(callbackProvider.Called);
        }