Пример #1
0
        public void ThreadsCanAccessCustomContextValue()
        {
            var customId  = Guid.NewGuid();
            var provider1 = new OneValueProvider <Guid>(FulcrumApplication.Context.ValueProvider, "Custom");

            provider1.SetValue(customId);
            var done      = false;
            var canAccess = false;
            var thread    = new BasicThreadHandler().FireAndForget(token =>
            {
                var provider2 = new OneValueProvider <Guid>(FulcrumApplication.Context.ValueProvider, "Custom");
                canAccess     = customId == provider2.GetValue();
                done          = true;
            });

            UT.Assert.IsNotNull(thread);
            while (!done)
            {
                Thread.Sleep(TimeSpan.FromMilliseconds(10));
            }

            UT.Assert.IsTrue(canAccess);
            Thread.Sleep(TimeSpan.FromMilliseconds(10));
            UT.Assert.IsFalse(thread.IsAlive);
        }
Пример #2
0
        public void IsAliveChanges()
        {
            var done   = false;
            var thread = new BasicThreadHandler().FireAndForget(token =>
            {
                Thread.Sleep(TimeSpan.FromMilliseconds(100));
                done = true;
            });

            UT.Assert.IsNotNull(thread);
            UT.Assert.IsTrue(thread.IsAlive);
            while (!done)
            {
                Thread.Sleep(TimeSpan.FromMilliseconds(10));
            }

            Thread.Sleep(TimeSpan.FromMilliseconds(10));
            UT.Assert.IsFalse(thread.IsAlive);
        }
Пример #3
0
        public void ThreadsCanAccessKnownContextValue()
        {
            var correlationId = Guid.NewGuid().ToString();

            FulcrumApplication.Context.CorrelationId = correlationId;
            var done      = false;
            var canAccess = false;
            var thread    = new BasicThreadHandler().FireAndForget(token =>
            {
                canAccess = correlationId == FulcrumApplication.Context.CorrelationId;
                done      = true;
            });

            UT.Assert.IsNotNull(thread);
            while (!done)
            {
                Thread.Sleep(TimeSpan.FromMilliseconds(10));
            }

            UT.Assert.IsTrue(canAccess);
            Thread.Sleep(TimeSpan.FromMilliseconds(10));
            UT.Assert.IsFalse(thread.IsAlive);
        }