如何从UWP中另一个正在运行的线程调用UI线程中的方法?

时间:2017-07-16 14:01:31

标签: c# multithreading uwp task

我想从Thread内部调用Update(int i)。我曾经使用过BeginInvoke(),但它在UWP中不可用。

public class Viewmodel
{
 Viewmodel()
 {
   //start task
   var mainTask = Task.Factory.StartNew(() =>
   {
     MyThread();
   });
 }
 private void MyThread()
 {
    int i;
    while(condition)
    {
      //do somethings
      Update(i) 
    }
 }
 private Update(int i)
 {
   //do somethings
 }
}

2 个答案:

答案 0 :(得分:1)

以下内容应该有效。

Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
    // update your UI here
    Update(i) 
});

答案 1 :(得分:-1)

您可以使用以下代码运行代码:

await Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.High/* the rank */,
() =>
{
    // run the code
});

我有另一种方法可以做到这一点

  await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal /*the rank*/, () => { // run the code  });

请参阅https://stackoverflow.com/a/38175976/6116637