[英]Calling same method multiple times and show progress
我有一个存储过程,可以运行动态查询并生成一个结果集到静态表。 作为回报,它将看起来像下面(从概念上)
我可以通过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
}
这是正确的方法还是其他实现方法?
如果您可以将我重定向到完成此工作的某些博客/白皮书/示例,将不胜感激
PS:以上代码仅基于假设,可能在语法上不正确。
您处在正确的轨道上,但不要使用Task.Wait()
因为这可能导致死锁。 请参见异步编程最佳实践 。 您可以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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.