如何异步任务和 Mailchimp API v3.0

How to async task and Mailchimp API v3.0

我正在尝试从 MailChimp 获取 MailChimp 列表集合。我已经设置了 MailChimp.net 示例中显示的过程以获取所有列表,但它在返回列表之前退出,除非我在调用任务后使用控制台读取。我如何才能完成这个看似简单的任务?

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
}

我最近遇到了这个问题。因为 AddUpdateMailChimp() 是异步的,所以 Main() 方法会在命中后立即继续执行,而不是等待结果。

方法 return 也是无效的,因此它被视为 fire-and-forget。

如果你希望能够等待它,那么它应该return一个任务。

这样,在Main()你可以

var result = AddUpdateMailChimp().Result;