очевидно, "ожидание новой задачи (() =>" не работает должным образом.
Вы не должны никогда, никогда, никогда не использовать конструктор Task
.
В идеале вам следует запустить с вашими API-интерфейсами базы данных самого низкого уровня и изменить их на использование *Async
API (с await
), а затем позволить async
расти оттуда. Трудно сказать, где находится ввод-вывод в вашем примере кода, но вот одна из возможностей, как это может выглядеть:
public async Task<bool> CheckAccountAsync(string rowrequest_)
{
Extract extract = new Extract();
string password = string.Empty, username = string.Empty, returndata = string.Empty;
DatabaseConnection connection = new DatabaseConnection();
username = extract.ExtractValue(rowrequest_, "username");
password = extract.ExtractValue(rowrequest_, "password");
string connectionStr = "frozenfiredb::std@basicconnection~(((dbuser)program(*dbuser)(dbpassword)K%ls!Sfgh3lloW%0rld45(*dbpassword)(dbtable)CasinoUser(*dbtable))(read_content)" + username + "(*read_content))";
returndata = await connection.StaticConnectionAsync(connectionStr);
return !returndata.StartsWith("FILE ERROR") && password == returndata;
}
Если это невозможно (из-за ограничений API) или выполнимо (сейчас слишком много работы), и , если ваш код находится в приложении с графическим интерфейсом (не ASP.NET), тогда вы можете сохраните этот метод синхронным и просто вызовите асинхронно, используя Task.Run
:
public bool CheckAccount(string rowrequest_)
{
Extract extract = new Extract();
string password = string.Empty, username = string.Empty, returndata = string.Empty;
DatabaseConnection connection = new DatabaseConnection();
username = extract.ExtractValue(rowrequest_, "username");
password = extract.ExtractValue(rowrequest_, "password");
string connectionStr = "frozenfiredb::std@basicconnection~(((dbuser)program(*dbuser)(dbpassword)K%ls!Sfgh3lloW%0rld45(*dbpassword)(dbtable)CasinoUser(*dbtable))(read_content)" + username + "(*read_content))";
returndata = connection.StaticConnection(connectionStr);
return !returndata.StartsWith("FILE ERROR") && password == returndata;
}
...
string rowrequest = ...;
bool result = await Task.Run(() => CheckAccount(rowrequest));