порядок исполнения Silverlight странный - PullRequest
0 голосов
/ 03 октября 2011

Мне нужна форма входа в систему, через которую пользователь вводит имя пользователя и пароль, если они верны, тогда он проверит первый раз вход в систему, если пользователь войдет в систему в первый раз, а затем страницу перенаправления shd для изменения формы пароля. Я хочу реализовать это в Silverlight.используя сервис wcf для написания кода, поэтому моя логика заключается в том, что я сохраняю имя пользователя в сеансе, а затем перенаправляю его, чтобы изменить форму пароля, но иногда он сначала сохраняет имя пользователя, а затем перенаправляет, чтобы изменить форму пароля, что верно, но в следующий раз, если я выполнюту же форму, затем он сначала перенаправляет на изменение формы пароля, а затем устанавливает сеанс имени пользователя, так что даже имя пользователя является правильным, он перенаправляет на форму входа, пожалуйста, помогите мне, это сводит меня с ума.вот мой код

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

, поэтому в идеале первая строка должна выполняться первой, а вторая - второй, но здесь несколько раз выполняется первая компиляция в первый раз, а вторая - во второй раз.

поэтому сначала я устанавливаю переменную сеанса, затем я хочу перенаправить ее на страницу смены пароля, но здесь иногда это происходит правильно, но иногда сначала перенаправляется на изменение пароля, а затем устанавливается переменная сеанса, почему это так? что не так спорядок следования?

пожалуйста, дайте мне знать порядок исполнения Silverlight. любая помощь будет очень полезна. Вы также можете написать мне на foramparikh8884@gmail.com.

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Невозможно выполнить асинхронные операции в том порядке, в котором вы пишете код. Чтобы получить эту работу в последовательности, используйте событие Completed в методе Async, а затем выполните следующий метод, как показано ниже:

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

Обратите внимание, что я использую лямбда-выражения в приведенном выше фрагменте кода.

0 голосов
/ 03 октября 2011

Поскольку метод SetSessionVariableAsync () является асинхронным, тогда нет гарантии, когда он завершится. Если вы ДОЛЖНЫ выполнить этот финиш первым, запустите второй метод в завершенном событии для первого метода.

...