C#运行SQL Server查询而不等待结果

问题描述

我正在使用Serenity C#开发网站。

当我单击一个按钮时,它应该运行一个sql命令,这将启动一个存储过程。

我的代码

public ListResponse<MyRow> Runsql(IDbConnection connection,ListRequest request)
{
    string sql = "EXEC SP_A @Username='" + Authorization.UserDeFinition.Username + "'";
    sqlHelper.ExecuteNonQuery(connection,sql);
    return new MyRepository().List(connection,request);
}

代码可以正常工作,但是由于我的网站需要等待查询完成,因此它使我的网站运行缓慢。

我想启动sql命令,而不要等待结果。我可以为此使用任务并行库(TPL)吗?

解决方法

我可以使用TPL(任务并行库)吗?

不,您不能。您执行一个语句,我什至不知道您会想到一个项目的并行运算会做什么。如果该查询需要很长时间,则分析它是否有缺陷。如果它没有缺陷...

...将API更改为异步,然后返回返回令牌。它正在等待返回值,因为您认为API是同步的。如果您不能接受,则说明API出现设计错误,并且至少应更改此方法的设计。

async / await / paralellism中的任何内容都不会改变API设计,并且不会神奇地使请求更快地完成。