bool success = await ExceptionalTaskRun(async () =>
{
Debug.WriteLine("1");
var netAddress = NetAddress.FromString(address);
Debug.WriteLine("2");
server = await GetCachedServer(netAddress);
Debug.WriteLine("3");
if (server != null)
return;
Debug.WriteLine("4");
var gameClient = GetClient(netAddress);
Debug.WriteLine("5");
if (gameClient != null)
{
Debug.WriteLine("6");
server = new ServerListItemVM(gameClient.ServerInfo);
}
else
{
Debug.WriteLine("7");
var serverInfo = await GetServerInfo(netAddress);
Debug.WriteLine("8");
if (serverInfo != null)
{
Debug.WriteLine("9");
server = new ServerListItemVM(serverInfo);
}
}
});
Debug.WriteLine($"{success} {server == null}");
return server;
}
public static async Task<bool> ExceptionalTaskRun(Action action)
{
bool result = true;
await Task.Run(action)
.ContinueWith(async t =>
{
Debug.WriteLine("t: " + t.Status);
if (t.IsFaulted)
{
result = false;
await ExceptionCallback(t.Exception);
}
});
return result;
}
Вывод:
1
2
t: RanToCompletion
True True
3
господа знатоки, подскажите, почему такой порядок вывода? всё ожидается, и по идее "3" должно быть до "True True" и server должен быть НЕ null:
1
2
3
t: RanToCompletion
True False
Task.Run(action) не ждет action
точно, спасибо
Что ты вообще хочешь сделать?
Обсуждают сегодня