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

时间:2013-09-25 11:31:44

标签: silverlight silverlight-4.0 dynamics-crm-2011 silverlight-5.0

我正在使用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的值。

1 个答案:

答案 0 :(得分:0)

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