2017-02-17 5 views
0

私はMailChimpからMailChimpリストコレクションを取得しようとしています。すべてのリストを取得するためにMailChimp.netの例で表示されているようにプロセスを設定しましたが、タスクが呼び出された後にコンソールを読み込まない限り、リストが返される前に終了します。どのようにすればこの簡単な仕事がうまくいくのですか?どのように非同期タスクとMailchimp API v3.0

static void Main(string[] args) 

{ 

    AddUpdateMailChimp(); 

    Console.Read(); 

} 

static async void AddUpdateMailChimp() 

{ 

    lstIDs = await Get_MailChimp_Info(); 

    for(int i = 0; i < lstIDs.Count; i++) 

    { 

     AddUpDateMailChimpAsync(lstIDs[i]); 
    } 

} 

private static async Task< List<string>> Get_MailChimp_Info() 

{ 

    var lstIDs = new List<string>(); 

    apikey = GetApiKey() //from config file 

    manager = new MailChimpManager(apikey); 
    //............below line is where it bombs unless I use a concole.Read in the main..........// 

    **IEnumerable< MailChimp.Net.Models.List> mailChimpListCollection = await manager.Lists.GetAllAsyunc().ConfigureAwait(continueOnCapturedContext: false);** 

    ............catch statements 

    //.......foreach loop to get the list Ids 
} 

答えて

0

最近この問題が発生しました。 AddUpdateMailChimp()は非同期なので、Main()メソッドはヒットするとすぐに実行を継続し、結果を待つことはありません。

また、このメソッドはvoidを返しますので、fire-and-forgetと見なされます。

待つことができるようにしたい場合は、タスクを返す必要があります。

そうすれば、Main()にあなたが

var result = AddUpdateMailChimp().Result;

+0

を行うことができますが、私は行くことを与える、ありがとうございます。 – BillO

+0

もう一度ありがとう、それは働いた。 – BillO