コード例 #1
0
        public void Stay_On_The_Same_Thread()
        {
            var threadId  = Thread.CurrentThread.ManagedThreadId;
            var contextId = STAContext.Run(() => Thread.CurrentThread.ManagedThreadId);

            Assert.AreEqual(threadId, contextId);
        }
コード例 #2
0
        public void CurrentContext_IsSTAContext()
        {
            STAContext context = null;

            STAContext.Run(() => { context = STAContext.Current; });

            Assert.IsNotNull(context);
        }
コード例 #3
0
        public void Run_AsyncVoid_Blocks_Until_Completed()
        {
            var blocked = false;

            STAContext.Run((Action)(async() =>
            {
                await Task.Delay(5);
                blocked = true;
            }));

            Assert.IsTrue(blocked);
        }
コード例 #4
0
        public void Run_AsyncTaskWithResult_Blocks_Until_Completed()
        {
            var blocked = false;

            var result = STAContext.Run(async() =>
            {
                await Task.Delay(5);
                blocked = true;

                return(42);
            });

            Assert.IsTrue(blocked);
            Assert.AreEqual(42, result);
        }
コード例 #5
0
 public void Run_AsyncTask_Throws_On_Null()
 {
     Assert.Throws <ArgumentNullException>(() => STAContext.Run((Func <Task>)null));
 }