zoukankan      html  css  js  c++  java
  • An entry point cannot be marked with the 'async' modifier

    I copied below code from this link.But when I am compiling this code I am getting an entry point cannot be marked with the 'async' modifier. How can I make this code compilable?

    class Program
    {
        static async void Main(string[] args)
        {
            Task<string> getWebPageTask = GetWebPageAsync("http://msdn.microsoft.com");
    
            Debug.WriteLine("In startButton_Click before await");
            string webText = await getWebPageTask;
            Debug.WriteLine("Characters received: " + webText.Length.ToString()); 
        }
    
        private static async Task<string> GetWebPageAsync(string url)
        {
            // Start an async task. 
            Task<string> getStringTask = (new HttpClient()).GetStringAsync(url);
    
            // Await the task. This is what happens: 
            // 1. Execution immediately returns to the calling method, returning a 
            //    different task from the task created in the previous statement. 
            //    Execution in this method is suspended. 
            // 2. When the task created in the previous statement completes, the 
            //    result from the GetStringAsync method is produced by the Await 
            //    statement, and execution continues within this method. 
            Debug.WriteLine("In GetWebPageAsync before await");
            string webText = await getStringTask;
            Debug.WriteLine("In GetWebPageAsync after await");
    
            return webText;
        }
    
        // Output: 
        //   In GetWebPageAsync before await 
        //   In startButton_Click before await 
        //   In GetWebPageAsync after await 
        //   Characters received: 44306
    }

    The error message is exactly right: the Main() method cannot be async, because when Main()returns, the application usually ends.

    If you want to make a console application that uses async, a simple solution is to create an asyncversion of Main() and synchronously Wait() on that from the real Main():

    static void Main()
    {
        MainAsync().Wait();
    }
    
    static async Task MainAsync()
    {
        // your async code here
    }

    This is one of the rare cases where mixing await and Wait() is a good idea, you shouldn't usually do that.

    from:http://stackoverflow.com/questions/16712172/an-entry-point-cannot-be-marked-with-the-async-modifier

    from:http://www.itstrike.cn/Question/f33637bc-2f7f-47b3-9985-0fe709b24d57.html

    I copied below code from this link.But when I am compiling this code I am getting an entry point cannot be marked with the 'async' modifier. How can I make this code compilable?

    classProgram{static async voidMain(string[] args){Task<string> getWebPageTask =GetWebPageAsync("http://msdn.microsoft.com");Debug.WriteLine("In startButton_Click before await");string webText = await getWebPageTask;Debug.WriteLine("Characters received: "+ webText.Length.ToString());}privatestatic async Task<string>GetWebPageAsync(string url){// Start an async task. Task<string> getStringTask =(newHttpClient()).GetStringAsync(url);// Await the task. This is what happens: // 1. Execution immediately returns to the calling method, returning a //    different task from the task created in the previous statement. //    Execution in this method is suspended. // 2. When the task created in the previous statement completes, the //    result from the GetStringAsync method is produced by the Await //    statement, and execution continues within this method. Debug.WriteLine("In GetWebPageAsync before await");string webText = await getStringTask;Debug.WriteLine("In GetWebPageAsync after await");return webText;}// Output: //   In GetWebPageAsync before await //   In startButton_Click before await //   In GetWebPageAsync after await //   Characters received: 44306}
  • 相关阅读:
    LIST组件使用总结
    openlayers之interaction(地图交互功能)
    vbind:class绑定样式,决定样式的显示与否
    cesium之measure功能实现
    Cesium渲染效果差,锯齿明显,解决办法
    CSS让DIV层叠 两个DIV或多个DIV顺序重叠加
    ES6之import/export命令
    vantui:
    Openlayers简单要素的添加
    Vue中的this表示?
  • 原文地址:https://www.cnblogs.com/zjoch/p/6706784.html
Copyright © 2011-2022 走看看