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); }
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); }
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); }