我是使用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)
我知道这不是从"顶部"异步运行的.由于无法async在Main方法上指定修饰符,如何在main异步中运行代码?
我最近在阅读一些使用大量异步方法的代码,但有时需要同步执行它们.代码确实:
Foo foo = GetFooAsync(...).GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud)
这是一样的吗?
Foo foo = GetFooAsync(...).Result;
Run Code Online (Sandbox Code Playgroud)
?
我需要一些帮助来找出问题所在.我已经使用了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)
任何帮助都很感激,希望我不只是忽略了一些东西.
谢谢!