我有 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;
}
}