Windows runtime Winrt中带有Gmail Api的非阻塞UI

Windows 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

我正在uwp中开发一个gmail客户端,希望使用gmail api,但我希望获取消息时不阻塞ui。下面的方法会阻塞ui

   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”);
}
返回结果;
});
}