2011-10-03 90 views
0

我想通过登录表单通过哪个用户输入用户名和密码,如果它是正确的,那么它将检查第一次登录如果用户登录第一次然后页面shd重定向到更改密码形式我想在Silverlight中实现这个我正在使用wcf服务来编写代码,所以我的逻辑是我在会话中存储用户名,然后我重定向它以更改密码表单,但有时它会先存储用户名,然后重定向以更改密码表单,这是正确的但下一次,如果我执行相同的形式,然后它首先重定向到更改密码的形式,然后它设置用户名会话,所以即使用户名是正确的,它重定向到登录窗体请帮助我这让我疯狂。 这是我的代码silverlight执行顺序很奇怪

gen.SetSessionVariableAsync(“uname”,username.Text); App.Navigate(new UserMgt.Changepassword());

如此理想的第一行应该执行第一行和第二行执行第二行但在这里有时第一次首先编译,第二次第一次编译。

所以首先我设置会话变量,然后我想重定向它来更改密码页面,但在这里有时它确实适当,但有时它首先重定向到更改密码,然后它设置为会话变量为什么它是这样的?序列顺序错误?

请让我知道句子silverlight执行的顺序..任何帮助将被高度占用。您也可以通过电子邮件发送给我[email protected]

回答

0

因为SetSessionVariableAsync()方法是异步的,所以在完成时不能保证。如果你必须先完成这个完成,那么在第一个方法的完成事件中激发第二个方法。

1

无法按照写代码的顺序完成异步操作。得到的序列中的这个工作的方式是通过使用异步方法完成的事件,然后在那里执行如下下面的方法:

gen.SetSessionVariableAsync("uname", username.Text).Complete((o,e)=> 
{ 
    App.Navigate(new UserMgt.Changepassword()); 
}); 

注意,我用在上面的代码片段lambda表达式。