根据这篇文章,获得最高投票的答案表明我们可以直接在main中使用async。还是我误会了?
Can't specify the 'async' modifier on the 'Main' method of a console app
我的主班:
public class Program
{
public static async Task Main(string[] args)
{
ApproveEvents ap = new ApproveEvents();
List<MyModel> result = new List<MyModel>();
result = await ap.ApproveAsync();
if (result.count > 0)
{
//do something here
}
}
}
然后
public class ApproveEvents
{
public async Task<List<MyModel>> ApproveAsync()
{
//blah blah
}
}
Visual Studio 2017抱怨no Main method for an entry point
。
我应该如何解决?
答案 0 :(得分:5)
git cherry-pick <commit-sha>
在C# 7.1中可用。您可以在build properties中进行更改(默认值为最新的主要版本7.0)
答案 1 :(得分:2)
我建议您查看此topic来为您提供帮助,它可以直接解决您的问题。
它说:
如上所示,如果您要在 入口点方法,您需要应用一些解决方法,因为 以下入口点定义无效:
public static async Task Main(string[] args)
{
await BuildWebHost(args).RunAsync();
}
为了完成这项工作,您需要做以下工作:
public static void Main(string[] args)
{
BuildWebHost(args).RunAsync().GetAwaiter().GetResult();
}
或在任务对象本身上调用wait()
:
public static void Main(string[] args)
{
BuildWebHost(args).RunAsync().Wait();
}
在C#7.1中有一个有效的入口点列表,这是最新列表:
public static void Main();
public static int Main();
public static void Main(string[] args);
public static int Main(string[] args);
public static Task Main();
public static Task<int> Main();
public static Task Main(string[] args);
public static Task<int> Main(string[] args);