无法从silverlight应用程序中的非UI线程访问UI控件的值
我正在使用silverlight 5应用程序为CRM 2011创建Webresource。在我的代码中,我使用BeginExecute和EndExecute方法来检索可用的时间段来安排约会。没有in-EndExecute方法我将获得所有可以发出会议请求的可用时间段。现在,当我获得可用的时隙时,我必须检查所有时隙的开始时间,并在UI上的UI上选择开始时间,我使用DateTimePicker,为此,我必须从DateTimePicker读取值。为此,我尝试了DateTimePIcker.SelectedDateTime,但它给了我错误提示:无效的跨线程访问 我在谷歌上搜索了这个问题,发现非UI线程无法完成UI操作。他们建议使用Dispatcher.BeginInvoke 我已经试过了,下面是我的代码无法从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
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甚至是最差的。希望其他人能加入进来。试试这个链接。它可能会得到你想要的: