なぜこれが起こっているのか理解できたと思うので、私の質問は、どうすればコードを変更して、自分が望むように動作させることができるかということだと思います.
まずはコード。
private void btnLiveSignin_Click(object sender, RoutedEventArgs e)
{
var LoggedIn = Login();
busy.Visibility = System.Windows.Visibility.Visible; // Display the please wait message
if (LoggedIn.Result)
{
// Do something
}
}
public async Task<bool> Login()
{
try
{
var e = await lac.InitializeAsync(Scopes);
if (e.Status == LiveConnectSessionStatus.Connected)
{
client = new LiveConnectClient(e.Session);
// do some stuff now that we are connected
return true;
}
else
{
// not connected so do something
return false;
}
}
catch (Exception ex)
{
return false;
}
}
基本的に、ユーザーがボタンをクリックすると、Windows Live アカウントにログインし、その間、ユーザーに待機を求めるメッセージが表示されます。
ご想像のとおり、UI がロックされているため、メッセージは表示されません。UI がロックされないように変更するにはどうすればよいですか?
SDKは非同期を使用しなかったため、イベントを使用する前にWindows Phone 7.5でこれを行いましたが、それは完全に正常に機能しました。これには、非同期とイベントの混合が必要ですか?