How to call a async task from main()

时间:2015-09-14 16:13:38

标签: c#

I am trying to call this method but it returns Await operator can only be used within an Async method

this is the code.

code:

  static void Main(string[] args)
    {
         config = new InstagramConfig(CliendID, ClientSecret,redirectURI);

          Auth = new OAuth(config);
          var scopes = new List<OAuth.Scope>();
          scopes.Add(OAuth.Scope.Likes);
          scopes.Add(OAuth.Scope.Basic);
          scopes.Add(OAuth.Scope.Comments);
          scopes.Add(OAuth.Scope.Relationships);

          var link = OAuth.AuthLink(config, scopes, OAuth.ResponseType.Code);

          HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(link);
          WebResponse webresponse =  myReq.GetResponse();
          await call();


    }

    public static async Task call()
    {
        var authInfo = new OAuth(config);
        var response = await authInfo.RequestToken("");
        var user = new Users(config, response);
        var media = await user.RecentSelf();
    }

How will i rectify this error?

1 个答案:

答案 0 :(得分:3)

最简单的方法是阻止呼叫并等待。你没有得到异步行为,但是嘿 - 无论如何你都在单个线程的控制台应用程序中。

call().Wait();

如果您想要真正的异步行为,包括消息泵和同步上下文(可能因为您同时在控制台应用程序中进行了其他操作),您有几个不同的选项:

  1. 使用Stephen Toub's MSDN post中的AsyncPump课程。

  2. 使用Stephen Cleary's AsyncEx project中的AsyncContext课程。

  3. 如果您使用新的.NET Core(又称“DNX”),那么您可以将Main方法设为异步,如下所示:

    static async Task Main(string[] args)