Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “错误”;调用线程无法访问此对象,因为其他线程拥有它";将页边距设置为表格时_C#_.net_Wpf_Multithreading_Exception Handling - Fatal编程技术网

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); 
     });