2011-10-03 91 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表達式。