C# Parse.com CurrentUser始终为空

C# Parse.com CurrentUser始终为空,c#,asynchronous,parse-platform,C#,Asynchronous,Parse Platform,最近我尝试用C语言编写一些应用程序。我在我的一些iOS应用程序中使用了Parse.com,一切都很好,我很喜欢它 现在我正试图用C#编写ASP.NET web应用程序,它也使用Parse.com ParseUser.CurrentUser似乎总是空的。在我的控制器中,我调用Model方法-Login(),然后使用CheckUser()确定是否有人登录 //Controller public bool Index() { LoginModel login = new LoginModel

最近我尝试用C语言编写一些应用程序。我在我的一些iOS应用程序中使用了Parse.com,一切都很好,我很喜欢它

现在我正试图用C#编写ASP.NET web应用程序,它也使用Parse.com

ParseUser.CurrentUser似乎总是空的。在我的控制器中,我调用Model方法-Login(),然后使用CheckUser()确定是否有人登录

//Controller

public bool Index()
{
    LoginModel login = new LoginModel();
    Task t = Task.Run(() =>{
        login.Login();
    });
    t.Wait();
    return login.CheckUser();
}
在我的模型中,我有两种方法:

//Model

public async void Login()
{
    await ParseUser.LogInAsync("admin", "admin");
    Debug.WriteLine(ParseUser.CurrentUser.Username);//actually outputs username
}

public bool CheckUser()
{
    if (ParseUser.CurrentUser != null) //always says false
    {
        return true;
    }
    else
    {
        return false;
    }
}

我的错误似乎是在索引方法中,可能与异步登录方法有关。我如何处理它?

您不应该像Stephen Cleary指出的那样阻止异步代码

本文的要点是,不同的任务处理模型使用不同的上下文。因此,当TPL试图返回到异步上下文时,它找不到它

此外,通过在任务中包装异步调用并等待该任务,并不意味着您也在等待包装的异步调用返回

我将重新编写索引方法,如下所示:

public async Task<bool> Index()
{
    LoginModel login = new LoginModel();
    await login.Login();
    return login.CheckUser();
}
公共异步任务索引()
{
LoginModel login=new LoginModel();
等待登录。login();
返回login.CheckUser();
}