コード例 #1
0
        public async Task Test_DispatcherQueueHelper_Action_Ok_NonUIThread()
        {
            var taskSource = new TaskCompletionSource <object>();
            await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(
                CoreDispatcherPriority.Normal, async() =>
            {
                try
                {
                    var dispatcherQueue = DispatcherQueue.GetForCurrentThread();
                    await Task.Run(async() =>
                    {
                        await DispatcherQueueHelper.ExecuteOnUIThreadAsync(dispatcherQueue, () =>
                        {
                            var textBlock = new TextBlock {
                                Text = nameof(Test_DispatcherQueueHelper_Action_Ok_NonUIThread)
                            };

                            Assert.AreEqual(textBlock.Text, nameof(Test_DispatcherQueueHelper_Action_Ok_NonUIThread));

                            taskSource.SetResult(null);
                        });
                    });
                }
                catch (Exception e)
                {
                    taskSource.SetException(e);
                }
            });

            await taskSource.Task;
        }
コード例 #2
0
        public void Test_DispatcherQueueHelper_Action_Ok_UIThread()
        {
            DispatcherQueueHelper.ExecuteOnUIThreadAsync(DispatcherQueue.GetForCurrentThread(), () =>
            {
                var textBlock = new TextBlock {
                    Text = nameof(Test_DispatcherQueueHelper_Action_Ok_UIThread)
                };

                Assert.AreEqual(textBlock.Text, nameof(Test_DispatcherQueueHelper_Action_Ok_UIThread));
            }).Wait();
        }
コード例 #3
0
        public void Test_DispatcherQueueHelper_FuncOfT_Ok_UIThread()
        {
            var textBlock = DispatcherQueueHelper.ExecuteOnUIThreadAsync(DispatcherQueue.GetForCurrentThread(), () =>
            {
                return(new TextBlock {
                    Text = nameof(Test_DispatcherQueueHelper_FuncOfT_Ok_UIThread)
                });
            }).Result;

            Assert.AreEqual(textBlock.Text, nameof(Test_DispatcherQueueHelper_FuncOfT_Ok_UIThread));
        }
コード例 #4
0
        public void Test_DispatcherQueueHelper_Action_Exception()
        {
            var task = DispatcherQueueHelper.ExecuteOnUIThreadAsync(DispatcherQueue.GetForCurrentThread(), () =>
            {
                throw new ArgumentException(nameof(this.Test_DispatcherQueueHelper_Action_Exception));
            });

            Assert.IsNotNull(task);
            Assert.AreEqual(task.Status, TaskStatus.Faulted);
            Assert.IsNotNull(task.Exception);
            Assert.IsInstanceOfType(task.Exception.InnerExceptions.FirstOrDefault(), typeof(ArgumentException));
        }
コード例 #5
0
        public void Test_DispatcherQueueHelper_FuncOfTaskOfT_Ok_UIThread()
        {
            DispatcherQueueHelper.ExecuteOnUIThreadAsync(DispatcherQueue.GetForCurrentThread(), () =>
            {
                var textBlock = new TextBlock {
                    Text = nameof(Test_DispatcherQueueHelper_FuncOfTaskOfT_Ok_UIThread)
                };

                Assert.AreEqual(textBlock.Text, nameof(Test_DispatcherQueueHelper_FuncOfTaskOfT_Ok_UIThread));

                return(Task.FromResult(1));
            }).Wait();
        }
コード例 #6
0
 public void Test_DispatcherQueueHelper_FuncOfT_Null()
 {
     DispatcherQueueHelper.ExecuteOnUIThreadAsync(DispatcherQueue.GetForCurrentThread(), default(Func <int>));
 }
コード例 #7
0
 public void Test_DispatcherQueueHelper_Action_Null()
 {
     DispatcherQueueHelper.ExecuteOnUIThreadAsync(DispatcherQueue.GetForCurrentThread(), default(Action));
 }