相关疑难解决方法(0)

无法在控制台应用程序的"Main"方法上指定"async"修饰符

我是使用async修饰符进行异步编程的新手.我试图弄清楚如何确保我Main的控制台应用程序的方法实际上异步运行.

class Program
{
    static void Main(string[] args)
    {
        Bootstrapper bs = new Bootstrapper();
        var list = bs.GetList();
    }
}

public class Bootstrapper {

    public async Task<List<TvChannel>> GetList()
    {
        GetPrograms pro = new GetPrograms();

        return await pro.DownloadTvChannels();
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这不是从"顶部"异步运行的.由于无法asyncMain方法上指定修饰符,如何在main异步中运行代码?

.net c# asynchronous console-application

415
推荐指数
10
解决办法
18万
查看次数

Task.Result和.GetAwaiter.GetResult()一样吗?

我最近在阅读一些使用大量异步方法的代码,但有时需要同步执行它们.代码确实:

Foo foo = GetFooAsync(...).GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud)

这是一样的吗?

Foo foo = GetFooAsync(...).Result;
Run Code Online (Sandbox Code Playgroud)

c# async-await

281
推荐指数
6
解决办法
9万
查看次数

使用.NET核心的异步请求

我需要一些帮助来找出问题所在.我已经使用了ASP.NET核心,我对此非常熟悉,尽管.NET核心C#似乎在"崩溃"并且在尝试发出异步请求时退出.

我有一个返回系统外部IP的方法

private async Task<string> getExternalIP()
    {
        using (System.Net.Http.HttpClient HC = new System.Net.Http.HttpClient())
        {
            return await HC.GetStringAsync("https://api.ipify.org/");
        }

    }
Run Code Online (Sandbox Code Playgroud)

这应该可以工作,但是当它到达HC.GetStringAsync时会退出.我也试过在它上面设一个断点,但它实际上并没有运行.

我试图通过使用调用该方法

string Address = await getExternalIP();
Run Code Online (Sandbox Code Playgroud)

任何帮助都很感激,希望我不只是忽略了一些东西.

谢谢!

.net c# console-application dotnet-httpclient .net-core

6
推荐指数
1
解决办法
1万
查看次数