从另一个窗口任务更改主窗口的UI /运行功能

本文关键字:窗口 UI 运行 功能 另一个 任务 | 更新日期: 2023-09-27 18:03:42

我需要做一件非常复杂的事情,它与Forms一起工作,而不是与WPF一起工作,我不知道为什么。

我必须通过第二个窗口的Task调用WPF程序主窗口的函数:

task[0] = Task<int>.Factory.StartNew(() =>
{
    ((MainWindow)Application.Current.MainWindow).status_running();
    return 0;
});

实际上,这个函数改变了不同的标签,但是如果任务。相反,如果是这样:

((MainWindow)Application.Current.MainWindow).status_running();
task[0] = Task<int>.Factory.StartNew(() =>
{
    return 0;
});

它似乎有效。因此,问题出现在任务中,如果我在线程中插入代码,问题也是一样的。

从另一个窗口任务更改主窗口的UI /运行功能

你需要调用UI线程TaskScheduler.FromCurrentSynchronizationContext()

task[0] = Task<int>.Factory.StartNew(() =>
            {
                ((MainWindow)Application.Current.MainWindow).status_running();
                return 0;
            }, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.FromCurrentSynchronizationContext());