【发布时间】:2019-03-09 12:27:43
【问题描述】:
我正在尝试获取方法的结果以在不同的调用中使用。
var 'AuthToken' 将设置一个事件,在我连接到authSocket 后最多 500 毫秒
我尝试使用 async/await,但是在 VS2017 中单步执行调试器时,代码继续
gameSocket = new Client_TBDGame(...)
在authSocket.GetAuthToken(...) 甚至返回之前。
如果有人可以看看,那就太棒了!也许我的问题存在完全不同的解决方案?
我有以下代码:
public static async Task<string> Init(string _ip)
{
if (!IsHostUp(_ip))
{
Debug.LogWarning("Cannot connect to Server!");
return "ERROR_SERVER_UNREACHABLE";
}
authSocket = new Client_Authenticate(_ip, Settings.SERVER_PORT);
token = await authSocket.GetAuthToken().ConfigureAwait(false);
// Connect to /game endpoint
gameSocket = new Client_TBDGame(_ip, Settings.SERVER_PORT, token);
return "SUCCESS";
}
Client_Authenticate
public async Task<string> GetAuthToken()
{
// Cancel after 15 tries and return "ERROR_TIMEOUT"
for (int i = 0; i < 15; i++)
{
if (AuthToken != null || AuthToken != "")
return AuthToken;
await Task.Delay(100);
}
return "ERROR_TIMEOUT";
}
【问题讨论】:
标签: c# async-await