【发布时间】:2019-04-16 15:52:19
【问题描述】:
我有问题。如果我调用该函数,连接到数据库的新任务需要的时间比返回时间长,所以它会返回一些奇怪的东西。我想让这个异步,所以我不想在没有异步的情况下这样做。如何解决这个问题,显然,“await new Task(() =>”不能正常工作。
我最初使这个非异步的,但这给我带来了问题。
using System.Threading.Tasks;
class Security
{
public async Task<bool> CheckAccount(string rowrequest_)
{
Extract extract = new Extract();
string password = string.Empty, username = string.Empty, returndata = string.Empty;
bool x = await new Task<bool>(() =>
{
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;
});
return x;
}
}
输出不正确。
【问题讨论】:
-
你为什么要通过创建新任务来强制异步
有什么具体原因吗? -
没有任何理由在您的代码中使用
Task。 -
它必须是多客户端的。
-
默认数据库超时为 30 秒。如果您得到奇怪的结果,那么您要么得到错误,要么需要很长时间才能检索数据,并且可能会使超时时间更长。该问题与等待无关。
-
我自己制作了这个数据库,所以几乎没有任何超时。
标签: c# asynchronous tcp return task