由于silverlight在调用RIA时采用的异步调用模式,即向服务器端发出了调用请求后继续执行下面的操作,而无视服务器端返回的结果。为了能够让返回结果影响下面的操作需要进行同步处理。示例
private void Button_Click(object sender,RoutedEventArgs e) { InvokeOperation op = service.Login(this.txUserCode.Text,this.txPassword.Password,LoginUser,null); op.Completed+=new EventHandler(op_Completed); } private void LoginUser(InvokeOperation op) { if(op.HasError) { MessageBox.Show(op.Error.Message); } else { curUser = op.Value as SYS_USER; } } void op_Completed(object sender,EventArgs e) { if (curUser == null || curUser.USERID == null) { MessageBox.Show("用户密码错误!"); } }
如上代码
InvokeOperation op = service.Login(this.txUserCode.Text,null);
实际是执行了WCF中的一个方法,并在执行后使用LoginUser这个回调函数来处理数据,添加了op_Completed事件确保服务器端方法执行完毕后再执行新的操作。
[Invoke] public SYS_USER Login(string userName,string password) { //操作 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。