嗯...我有一个登录页面和一个植入基于事件的异步模式的 WCF。最终,我需要在这里做的是对 WCF 方法进行异步调用,并且执行应该等待响应,然后继续进行身份验证,然后重定向。
我正在 WP8 上开发,我这样称呼我的 WCF:
登录.xaml.cs
private async void SignIn_Click(object sender, EventArgs e)
{
await App.Instance.StaticServiceData.LoadUser(App.Instance.User);
LoginSuccessFail();
}
WCF_StaticDataService.cs
public async Task LoadUser(User user)
{
var client = new BMAStaticDataService.StaticClient();
client.AuthenticateUserAsync(user);
client.AuthenticateUserCompleted += async (o,e) => {
try
{
await UpdateCacheUserData(existing);
if (existing.UserId > 0)
{
App.Instance.User.UserId = existing.UserId;
App.Instance.User.Email = existing.Email;
App.Instance.IsUserAuthenticated = true;
}
else
{
App.Instance.IsUserAuthenticated = false;
throw new Exception("User has no authentication");
}
}
catch (Exception){throw;}
}
我想调用 LoginSuccessFail(); 方法,然后仅在 WCF 调用完成后导航到相应的页面。请注意,我不想将我的导航感知代码放在 Service 类和 AuthenticateUserCompleted 事件中,因为它不是处理这个问题的工作。
最终,无论成功与否,服务调用完成后,我都希望在我的 Login.xaml.cs 中收到回调或反馈或任何内容。
希望我的信息足够。否则,请建议提供进一步的说明。