C# “错误”;调用线程无法访问此对象,因为其他线程拥有它";将页边距设置为表格时
我尝试在代码隐藏中为表设置边距,但无法,只是有一个例外:“调用线程无法访问此对象,因为其他线程拥有它。”我的代码:C# “错误”;调用线程无法访问此对象,因为其他线程拥有它";将页边距设置为表格时,c#,.net,wpf,multithreading,exception-handling,C#,.net,Wpf,Multithreading,Exception Handling,我尝试在代码隐藏中为表设置边距,但无法,只是有一个例外:“调用线程无法访问此对象,因为其他线程拥有它。”我的代码: Table Table=新表(); 图像图片=GetPicture(pictureName); double leftMargin=(最大图片宽度-图片宽度)尝试以下方法: Dispatcher.BeginInvoke(() => { Table table = new Table(); table.Margin = new T
Table Table=新表();
图像图片=GetPicture(pictureName);
double leftMargin=(最大图片宽度-图片宽度)尝试以下方法:
Dispatcher.BeginInvoke(() =>
{
Table table = new Table();
table.Margin = new Thickness(leftMargin, 0, 0, 0);
});
或
也许可以尝试在UI线程上创建表。不,不能使用lambda,只能使用delegate。Have next:App.Current.MainWindow.Dispatcher.Invoke(DispatcherPriority.Normal,(Action)委托{table.Margin=新厚度(leftMargin,0,0,0);});首先,你为什么不能用lambda?第二,你所说的“但问题是一样的”是什么意思?建议的答案应该可以解决您描述的问题(尽管基本问题是您试图从错误的线程修改UI,您可能会更好地解决这个问题)。错误8无法将lambda表达式转换为类型“System.Delegate”,因为它不是委托type@Leo你说的是,但问题是一样的
。。。。
Dispatcher.BeginInvoke(() =>
{
Table table = new Table();
table.Margin = new Thickness(leftMargin, 0, 0, 0);
});
Dispatcher.BeginInvoke(delegate()
{
Table table = new Table();
table.Margin = new Thickness(leftMargin, 0, 0, 0);
});