C# 无法从非UI线程更新wpf控件
我知道这个问题已经解决了,但我无法让它发挥作用。有人能帮我解决这个问题吗 这是我的xaml类:C# 无法从非UI线程更新wpf控件,c#,wpf,multithreading,data-binding,C#,Wpf,Multithreading,Data Binding,我知道这个问题已经解决了,但我无法让它发挥作用。有人能帮我解决这个问题吗 这是我的xaml类: namespace Windamow { /// <summary> /// Interaction logic for DynamoWindow.xaml /// </summary> public partial class DynamoWindow : Window { public DynamoWindow() { InitializeC
namespace Windamow
{
/// <summary>
/// Interaction logic for DynamoWindow.xaml
/// </summary>
public partial class DynamoWindow : Window
{
public DynamoWindow()
{
InitializeComponent();
}
public void setBrowserURL(string URL)
{
browser.Source = new Uri(URL);
}
public void setBrowserFromString(string HTMLString)
{
browser.NavigateToString(HTMLString);
}
}
}
xaml:
错误消息:
调用线程无法访问此对象,因为其他线程拥有它。问题在于:
var action = new Action(() => mow.window.setBrowserFromString(html));
此代码将尝试从主UI线程访问窗口
对象,而该对象已在另一个线程上创建并关联到另一个线程,即您自己创建的t
根据您的用例,您可以简单地尝试以下操作:
public DynamoWindow(string html)
{
InitializeComponent();
setBrowserFromString(html);
}
...
if (launch)
{
Windamow mow = new Windamow(html);
return mow.window;
}
(未经测试,但你已经知道了)关联的xaml在哪里?@isi更新了问题。我的错
var action = new Action(() => mow.window.setBrowserFromString(html));
public DynamoWindow(string html)
{
InitializeComponent();
setBrowserFromString(html);
}
...
if (launch)
{
Windamow mow = new Windamow(html);
return mow.window;
}