我有一个存储过程,大约需要2-3分钟来完成它的执行。在ado.net中,我想让存储过程在后台执行,我必须在向存储过程发出请求后立即返回代码。有人能在这方面帮我吗?
发布于 2012-05-30 01:55:11
您应该调查一下Threading。简而言之,您可以使用对存储过程的调用创建一个线程。当你启动线程时,它会在后台运行。这个线程可以有一个回调函数,该函数在线程结束时调用。
BackgroundWorker是一种创建线程的简单方法。
发布于 2012-05-30 01:53:50
考虑使用工作线程在后台调用上执行存储过程调用。您想知道存储过程调用的结果吗?如果您这样做了,那么您将需要等待并加入正在执行存储过程调用的工作线程。如果不是,你可以直接“触发并忘记”--但在这种情况下,你可能不知道任何错误/异常。
Here是Joe Albahari one threading写的一篇很好的文章。
发布于 2012-05-30 02:07:26
您可以尝试使用反应式编程(Rx)
Rx是微软的新提案,用于简化异步调用以及其他很酷的功能
http://msdn.microsoft.com/en-us/data/gg577609.aspx
Nuget包是:
https://nuget.org/packages/Rx-Main/1.0.11226
它应该是这样的:
// here call the sp
var o = Observable.Start(() => { Thread.Sleep(1000); });
o.Subscribe(x => { Console.WriteLine("Operation done"); });https://stackoverflow.com/questions/10804153
复制相似问题