C#如何调试异步

时间:2018-08-07 12:17:14

标签: c# asp.net-core

这个问题可能对我来说真的很容易,但是我真的不知道该怎么做。

我创建了一个包含多个互相调用的方法的类(第一个执行一些逻辑,然后调用第二个,依此类推)。由于等待外部服务器的POST和GET方法,所有这些方法都是异步的。

我想调试我的工作,以查看每个阶段的工作方式以及我在哪里出错了,但我不知道如何做。我尝试直接从主函数调用第一个函数并添加一个断点,但是在“ addi”之后缺少了“ await”的产量 n“等待”,我得到的收益是我需要使该方法异步,这与我的目的背道而驰。

我该怎么办?

    public static void Main(string[] args)
    {
        await LoadCampaignTempleteJSONAsync();
    }

我只想遵循LoadCampaignTempleteJSONAsync的过程。

2 个答案:

答案 0 :(得分:3)

从Main调用异步方法的最简单方法是调用ResultGetAwaiter().GetResult()

public static void Main(string[] args)
{
    LoadCampaignTempleteJSONAsync().Result;
    LoadCampaignTempleteJSONAsync().GetAwaiter().GetResult();
}

此外,从C#7.1开始,您可以使Main异步:

public static async Task Main(string[] args)
{
    await LoadCampaignTempleteJSONAsync();
}

答案 1 :(得分:0)

请尝试以下

class Program
{
    static void Main(string[] args)
    {
        var p = new Program();
        p.Run();
    }

    private async void Run()
    {
        await LoadCampaignTempleteJSONAsync();
    }

    private static Task LoadCampaignTempleteJSONAsync()
    {
        //Put breakpoint here!
        throw new NotImplementedException();
    }
}

并在LoadCampaignTempleteJSONAsync()内放置一个断点 这将达到断点