public void TestRandomForced()
        {
            ForcedEventHandlerForControl <VerifiedReceiptEventArgs> handler;

            handler = new ForcedEventHandlerForControl <VerifiedReceiptEventArgs>(_form, VerifiedReceipt);
            handler = new ForcedEventHandlerForControl <VerifiedReceiptEventArgs>(_form, new VerifiedReceiptEventHandler(handler.EventHandler));
            VerifiedReceiptEventArgs args = new VerifiedReceiptEventArgs();

            _form.Shown += delegate(object s, EventArgs e) { System.Threading.Thread.Sleep(100); _form.Close(); };
            _thread.Start();
            int total = 0, countOnThread = 0, countOffThread = 0;

            try
            {
                for (total = 1; total < 1000000; total++)
                {
                    handler.EventHandler(null, args.Reset());
                    Assert.IsTrue(args.Received);
                    if (args.OnThread)
                    {
                        countOnThread++;
                    }
                    else
                    {
                        countOffThread++;
                    }
                    //Assert.IsTrue(args.OnThread);
                    //Console.Error.WriteLine("Threaded = {0}", args.OnThread);
                    if (_form.IsDisposed)
                    {
                        break;
                    }
                }
                Assert.AreEqual(total, countOnThread + countOffThread);
                Assert.IsTrue(_form.IsDisposed);
                Assert.AreNotEqual(0, countOnThread);
                Assert.AreNotEqual(0, countOffThread);
            }
            catch (Exception e)
            {
                Console.Error.WriteLine(e.ToString());
                throw;
            }
            finally
            {
                _thread.Join();
            }
        }
		public void TestRandomForced()
		{
			ForcedEventHandlerForControl<VerifiedReceiptEventArgs> handler;
			handler = new ForcedEventHandlerForControl<VerifiedReceiptEventArgs>(_form, VerifiedReceipt);
			handler = new ForcedEventHandlerForControl<VerifiedReceiptEventArgs>(_form, new VerifiedReceiptEventHandler(handler.EventHandler));
			VerifiedReceiptEventArgs args = new VerifiedReceiptEventArgs();
			_form.Shown += delegate(object s, EventArgs e) { System.Threading.Thread.Sleep(100); _form.Close(); };
			_thread.Start();
			int total = 0, countOnThread = 0, countOffThread = 0;
			try
			{
				for (total = 1; total < 1000000; total++)
				{
					handler.EventHandler(null, args.Reset());
					Assert.IsTrue(args.Received);
					if (args.OnThread)
						countOnThread++;
					else
						countOffThread++;
					//Assert.IsTrue(args.OnThread);
					//Console.Error.WriteLine("Threaded = {0}", args.OnThread);
					if (_form.IsDisposed)
						break;
				}
				Assert.AreEqual(total, countOnThread + countOffThread);
				Assert.IsTrue(_form.IsDisposed);
				Assert.AreNotEqual(0, countOnThread);
				Assert.AreNotEqual(0, countOffThread);
			}
			catch (Exception e)
			{
				Console.Error.WriteLine(e.ToString());
				throw;
			}
			finally
			{
				_thread.Join();
			}
		}