我需要做一件非常复杂的事情,它使用Forms而不是WPF,我不知道为什么。
我必须通过第二个窗口的任务调用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;
});
似乎有效。因此,问题出现在任务中,如果我在线程中插入代码,则会出现同样的问题。
答案 0 :(得分:1)
您需要调用UI线程TaskScheduler.FromCurrentSynchronizationContext()
task[0] = Task<int>.Factory.StartNew(() =>
{
((MainWindow)Application.Current.MainWindow).status_running();
return 0;
}, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.FromCurrentSynchronizationContext());