2016-05-03 21 views
1

Ich entwickle ein Google Mail-Client in uwp und möchte Google Mail API verwenden, aber die Nachrichten erhalten asynchrone ohne blockiert die ui die folgende Methode blockiert die ui.Non Blocking UI mit Google Mail Api in Wintern

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

Antwort

1

Verwenden Task.Run für nicht blockierenden

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



     }