C#-在主函数中使用异步
根据这篇文章,得票最多的答案建议我们可以在main中直接使用async。还是我误解了 我的主要班级:C#-在主函数中使用异步,c#,visual-studio,C#,Visual Studio,根据这篇文章,得票最多的答案建议我们可以在main中直接使用async。还是我误解了 我的主要班级: public class Program { public static async Task Main(string[] args) { ApproveEvents ap = new ApproveEvents(); List<MyModel> result = new List<MyModel>();
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
}
}
}
公共类程序
{
公共静态异步任务主(字符串[]args)
{
ApproveEvents ap=新的ApproveEvents();
列表结果=新列表();
结果=等待ap.ApproveSync();
如果(result.count>0)
{
//在这里做点什么
}
}
}
以及
公共类批准事件
{
公共异步任务ApproveSync()
{
//废话
}
}
Visual Studio 2017抱怨没有用于入口点的主方法
如何解决此问题?异步任务Main
在中提供。您可以在中进行更改(默认为最新的主要版本,即7.0)我建议您查看此文档以帮助您,它正好说明了您的问题
它说:
如上所述,如果您希望在
entrypoint方法,您需要应用一些变通方法,因为
以下入口点定义无效:
为了完成这项工作,您需要执行以下变通方法:
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);
publicstaticvoidmain();
公共静态int Main();
公共静态void Main(字符串[]args);
公共静态int Main(字符串[]args);
公共静态任务Main();
公共静态任务Main();
公共静态任务主(字符串[]args);
公共静态任务主(字符串[]args);
尝试将应用程序指向项目属性上最新的.net framework。项目->属性->构建->高级->语言版本
,确保选择的内容大于或等于7.1,您需要根据您拥有的内容进行调整(最新的主要版本可能无法工作)请注意,标记说明中说“不要在有关仅在Visual Studio中编写的代码的问题上使用此标记”。请删除您的问题。根据您在底部发布的列表,此标记不是无效的,您能澄清您在此处的意思吗?请注意,async
关键字不会更改方法的签名,但会指示编译器转换方法体,因此您所说的无效入口点实际上是列表中倒数第二个入口点。这就是为什么我告诉您阅读我随附的帖子,这一切都是相互关联的:)你的答案仍然应该自立,现在你说“这是无效的”,然后接着说“根据这个列表,它是有效的”。我的回答鼓励op做一些研究,指出他们的方向,软件的关键是要知道你做错了什么,而不是在银盘上得到答案。这将给他足够的信息,让他看看主题,理解和学习相关问题,然后继续,这就是你的发展:)
public static void Main(string[] args)
{
BuildWebHost(args).RunAsync().Wait();
}
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);