Example #1
0
        public void UnobservedTaskExceptionOnFinalizerThreadTest()
        {
            var foo = new FinalizerCatcher();

            foo = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();
            // Same than following test, if GC didn't run don't execute the rest of this test
            if (finalizerThreadId == -1)
            {
                return;
            }

            int evtThreadId = -2;

            TaskScheduler.UnobservedTaskException += delegate {
                evtThreadId = Thread.CurrentThread.ManagedThreadId;
            };
            var evt = new ManualResetEventSlim();

            CreateAndForgetFaultedTask(evt);
            evt.Wait(500);
            Thread.Sleep(100);
            GC.Collect();
            GC.WaitForPendingFinalizers();
            Assert.AreEqual(finalizerThreadId, evtThreadId, "Should be ran on finalizer thread");
        }
		public void UnobservedTaskExceptionOnFinalizerThreadTest ()
		{
			var foo = new FinalizerCatcher ();
			foo = null;
			GC.Collect ();
			GC.WaitForPendingFinalizers ();
			// Same than following test, if GC didn't run don't execute the rest of this test
			if (finalizerThreadId == -1)
				return;

			int evtThreadId = -2;
			TaskScheduler.UnobservedTaskException += delegate {
				evtThreadId = Thread.CurrentThread.ManagedThreadId;
			};
			var evt = new ManualResetEventSlim ();
			CreateAndForgetFaultedTask (evt);
 			evt.Wait (500);
			Thread.Sleep (100);
			GC.Collect ();
			GC.WaitForPendingFinalizers ();
			Assert.AreEqual (finalizerThreadId, evtThreadId, "Should be ran on finalizer thread");
		}