Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-在主函数中使用异步_C#_Visual Studio - Fatal编程技术网

C#-在主函数中使用异步

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>();

根据这篇文章,得票最多的答案建议我们可以在main中直接使用async。还是我误解了

我的主要班级:

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);