我正在使用silverlight 5应用程序为CRM 2011创建Webresource。在我的代码中,我使用BeginExecute和EndExecute方法来检索可用时间段以安排约会。在EndExecute方法中没有我获得可以进行会议请求的所有可用时间段。现在,当我获得可用的时隙时,我必须检查所有时间段的开始时间,并在UI上选择开始时间(在UI上我已经采用了DateTimePicker),为此我必须从DateTimePIcker读取值。为此,我尝试了DateTimePIcker.SelectedDateTime但它给了我错误syaing“无效的跨线程访问”。
我搜索了这个问题,发现UI操作不能用非UI线程进行编程。他们建议使用Dispatcher.BeginInvoke(),
我已经尝试了以下是我的代码snipest
DateTime ScheduledDateTime = new DateTime();
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => ScheduledDateTime = Convert.ToDateTime(MainDateTimePicker.SelectedDateTime));
但仍然在变量ScheduledDateTime中我得到的值是“new DateTime()”
您能否建议我从非UI线程获取DateTimePicker的值。
答案 0 :(得分:0)
您可以这样做的一种方法是在调用BeginExecute
方法之前,将DateTimePicker
的值保存到变量中。然后你可以读取这个变量,甚至可以从另一个线程中读取。