Example #1
0
        public void BackgroundWorker_CancelAsync_ThrowsInvalidOperationExceptionWhenWorkerSupportsCancellationIsFalse()
        {
            using (UnitTestContext context = GetContext())
            {
                BackgroundWorker target = new BackgroundWorker();
                target.DoWork += (o, e) =>
                {
                    for (int i = 1; i < 11; i++)
                    {
                        Thread.Sleep(10);
                    }
                };
                target.WorkerSupportsCancellation = false;
                target.RunWorkerAsync(null);

                try
                {
                    target.CancelAsync(); // this call throws exception
                }
                catch (InvalidOperationException ex)
                {
                    context.Assert.Fail(ex);
                }
                context.Complete();
            }
        }
Example #2
0
        public void BackgroundWorker_CancelAsync_ReportsCancelledWhenWorkerSupportsCancellationIsTrue()
        {
            UnitTestContext context = GetContext();

            BackgroundWorker target = new BackgroundWorker();

            target.DoWork += (o, e) =>
            {
                // report progress changed 10 times
                for (int i = 1; i < 11; i++)
                {
                    Thread.Sleep(100);
                    if (target.CancellationPending)
                    {
                        e.Cancel = true;
                        return;
                    }
                }
            };
            target.WorkerSupportsCancellation = true;
            target.RunWorkerCompleted        += (o, e) =>
            {
                //  target does not support ReportProgress we shold get a System.InvalidOperationException from DoWork
                context.Assert.IsNull(e.Error);
                context.Assert.IsTrue(e.Cancelled);
                context.Assert.Success();
            };
            target.RunWorkerAsync(null);
            target.CancelAsync();
            context.Complete();
        }
    public void BackgroundWorker_CancelAsync_ThrowsInvalidOperationExceptionWhenWorkerSupportsCancellationIsFalse()
    {
      using (UnitTestContext context = GetContext())
      {
        BackgroundWorker target = new BackgroundWorker();
        target.DoWork += (o, e) =>
        {
          for (int i = 1; i < 11; i++)
          {
            Thread.Sleep(10);
          }
        };
        target.WorkerSupportsCancellation = false;
        target.RunWorkerAsync(null);

        try
        {
          target.CancelAsync();   // this call throws exception 
        }
        catch (InvalidOperationException ex)
        {
          context.Assert.Fail(ex);
        }
        context.Complete();
      }
    }
    public void BackgroundWorker_CancelAsync_ReportsCancelledWhenWorkerSupportsCancellationIsTrue()
    {
      UnitTestContext context = GetContext();

      int numTimesProgressCalled = 0;

      BackgroundWorker target = new BackgroundWorker();
      target.DoWork += (o, e) =>
      {
        // report progress changed 10 times
        for (int i = 1; i < 11; i++)
        {
          Thread.Sleep(100);
          if (target.CancellationPending)
          {
            e.Cancel = true;
            return;
          }
        }
      };
      target.WorkerSupportsCancellation = true;
      target.RunWorkerCompleted += (o, e) =>
      {
        //  target does not support ReportProgress we shold get a System.InvalidOperationException from DoWork
        context.Assert.IsNull(e.Error);
        context.Assert.IsTrue(e.Cancelled);
        context.Assert.Success();
      };
      target.RunWorkerAsync(null);
      target.CancelAsync();
      context.Complete();
    }