Windows Store MonoGame (Visual Studio 2012 の XAML MonoGame テンプレートに基づく) アプリがあります。
LiveConnect に接続すると、システムはすべてをバックグラウンドで実行しますが、LiveConnectClient.GetAsync を呼び出してユーザー情報を取得すると、await を使用して呼び出された場合でも、呼び出し元のスレッドがブロックされることがあります (通常は)。GetAsync 呼び出しを本当に非同期にする方法はありますか? 多分私はそれを呼び出すために新しいスレッドを作成する必要がありますか?
これが呼び出し元のコードです。これは MonoGame ドロー スレッド内で呼び出されます (MonoGame のメイン UI スレッドにはアクセスできません)。
private static LiveConnectSession session = null;
private static LiveAuthClient liveAuthClient = null;
private static LiveConnectClient liveConnectClient = null;
public static async Task AuthAsync()
{
liveAuthClient = new LiveAuthClient();
LiveLoginResult liveLoginResult = await liveAuthClient.InitializeAsync();
liveLoginResult = await liveAuthClient.LoginAsync(new List<string> { "wl.signin" });
if (liveLoginResult.Status == LiveConnectSessionStatus.Connected)
{
session = liveLoginResult.Session;
liveConnectClient = new LiveConnectClient(session);
LiveOperationResult liveOperationResult = await liveConnectClient.GetAsync("me");
dynamic meResult = liveOperationResult.Result;
MyEngine.userID = meResult.id;
}
}