Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
无法从silverlight应用程序中的非UI线程访问UI控件的值_Silverlight_Silverlight 4.0_Dynamics Crm 2011_Silverlight 5.0 - Fatal编程技术网

无法从silverlight应用程序中的非UI线程访问UI控件的值

无法从silverlight应用程序中的非UI线程访问UI控件的值,silverlight,silverlight-4.0,dynamics-crm-2011,silverlight-5.0,Silverlight,Silverlight 4.0,Dynamics Crm 2011,Silverlight 5.0,我正在使用silverlight 5应用程序为CRM 2011创建Webresource。在我的代码中,我使用BeginExecute和EndExecute方法来检索可用的时间段来安排约会。没有in-EndExecute方法我将获得所有可以发出会议请求的可用时间段。现在,当我获得可用的时隙时,我必须检查所有时隙的开始时间,并在UI上的UI上选择开始时间,我使用DateTimePicker,为此,我必须从DateTimePicker读取值。为此,我尝试了DateTimePIcker.Selecte

我正在使用silverlight 5应用程序为CRM 2011创建Webresource。在我的代码中,我使用BeginExecute和EndExecute方法来检索可用的时间段来安排约会。没有in-EndExecute方法我将获得所有可以发出会议请求的可用时间段。现在,当我获得可用的时隙时,我必须检查所有时隙的开始时间,并在UI上的UI上选择开始时间,我使用DateTimePicker,为此,我必须从DateTimePicker读取值。为此,我尝试了DateTimePIcker.SelectedDateTime,但它给了我错误提示:无效的跨线程访问

我在谷歌上搜索了这个问题,发现非UI线程无法完成UI操作。他们建议使用Dispatcher.BeginInvoke

我已经试过了,下面是我的代码

DateTime ScheduledDateTime = new DateTime();
    System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => ScheduledDateTime = Convert.ToDateTime(MainDateTimePicker.SelectedDateTime));
但是仍然在可变ScheduledDateTime中,我得到了new DateTime的值


你能给我建议一种从非UI线程获取DateTimePicker值的方法吗?

一种方法是在调用BeginExecute方法之前,将DateTimePicker的值保存到变量中。然后你可以读取这个变量,甚至可以从另一个线程读取。

Steve,是的,我也这样做了。但我想知道更好的方法。我的意思是,对于这样的事情,我不能采用全局变量。这是完全不可接受的。虽然我很感激你花了这么多时间。谢谢。你是对的,通过一些Lambda做这个是一个更好的选择,但是我的Lambda低于标准,我的C甚至是最差的。希望其他人能加入进来。试试这个链接。它可能会得到你想要的: