我有一个存储过程,可以运行动态查询并将结果集生成到静态表。作为回报,它将如下所示(概念上)
我可以通过SQL Dependency或node.js向用户显示结果,但我想了解我可以多次执行相同的存储过程并等待执行响应?
假设调用SP的函数是fnCallSPForDynamicExec 将多次调用此函数(使用线程)为我做正义。 像这样的东西
Page_Load()
{
foreach(var task in tasklist)
{
Task taskWork = Task.Run(new Action(fnCallSPForDynamicExec(task.taskid));
// Do something on UI
taskWork.Wait();
// Do something on UI
}
}
private void fnCallSPForDynamicExec (int task id)
{
//call dynamic SP
}
这是正确的还是其他任何方式来实现这一目标?
如果您能将我重定向到一些已经完成此类工作的博客/白皮书/样本,我将不胜感激
P.S。:以上代码仅基于假设,在语法方面可能不正确。
答案 0 :(得分:0)
您走在正确的轨道上,但不要使用Task.Wait()
因为这会导致死锁。 See Best Practices in Asynchronous Programming。您只需await
拨打Task.Run
。
public void async Page_Load()
{
foreach(var task in tasklist)
{
await Task.Run(() => fnCallSPForDynamicExec(task.taskid));
// Do something on UI
}
}
private void fnCallSPForDynamicExec (int taskid)
{
//call dynamic SP
}