Windows runtime Winrt中带有Gmail Api的非阻塞UI
我正在uwp中开发一个gmail客户端,希望使用gmail api,但我希望获取消息时不阻塞ui。下面的方法会阻塞uiWindows runtime Winrt中带有Gmail Api的非阻塞UI,windows-runtime,win-universal-app,gmail-api,winrt-async,Windows Runtime,Win Universal App,Gmail Api,Winrt Async,我正在uwp中开发一个gmail客户端,希望使用gmail api,但我希望获取消息时不阻塞ui。下面的方法会阻塞ui public async Task<IEnumerable<Message>> GetMessagesAsync(string userId, string labelId, long maxResults) { await AuthenticateAsync(); List<Message> r
public async Task<IEnumerable<Message>> GetMessagesAsync(string userId, string labelId, long maxResults)
{
await AuthenticateAsync();
List<Message> result = new List<Message>();
UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(userId);
request.LabelIds = labelId;
request.MaxResults = maxResults;
try
{
ListMessagesResponse response = request.Execute();
result.AddRange(response.Messages);
}
catch (Exception e)
{
//Console.WriteLine("An error occurred: " + e.Message);
}
return result;
}
public异步任务GetMessagesAsync(字符串userId、字符串labelId、long maxResults)
{
等待验证同步();
列表结果=新列表();
UsersResource.MessagesResource.ListRequest请求=service.Users.Messages.List(userId);
request.labelId=labelId;
request.MaxResults=MaxResults;
尝试
{
ListMessagesResponse-response=request.Execute();
result.AddRange(response.Messages);
}
捕获(例外e)
{
//Console.WriteLine(“发生错误:+e.Message”);
}
返回结果;
}
使用任务。运行
进行非阻塞
public async Task<IEnumerable<Message>> GetMessagesAsync(string userId, string labelId, long maxResults)
{
await AuthenticateAsync();
return await Task.Run(() =>
{
List<Message> result = new List<Message>();
UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(userId);
request.LabelIds = labelId;
request.MaxResults = maxResults;
try
{
ListMessagesResponse response = request.Execute();
result.AddRange(response.Messages);
}
catch (Exception e)
{
//Console.WriteLine("An error occurred: " + e.Message);
}
return result;
});
}
public异步任务GetMessagesAsync(字符串userId、字符串labelId、long maxResults)
{
等待验证同步();
返回等待任务。运行(()=>
{
列表结果=新列表();
UsersResource.MessagesResource.ListRequest请求=service.Users.Messages.List(userId);
request.labelId=labelId;
request.MaxResults=MaxResults;
尝试
{
ListMessagesResponse-response=request.Execute();
result.AddRange(response.Messages);
}
捕获(例外e)
{
//Console.WriteLine(“发生错误:+e.Message”);
}
返回结果;
});
}