2016-05-03 15 views
1

私はuwpでgmailクライアントを開発していますが、gmail apiを使用したいのですが、次のメソッドがuiをブロックするまで非同期メッセージを取得します。WinRtのGmail APIを使用した非ブロッキング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; 
    } 

答えて

1

使用Task.Run

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; 
       }); 



     } 
を阻止するための
関連する問題