Csharp/C#教程:C#中SQL Server存储过程的异步调用分享


C#中SQL Server存储过程的异步调用

是否可以通过C# 异步调用SQL Server存储过程

我有一个存储过程写一个特定数据库的备份(这可能需要很长时间才能完成),我想在Windows窗体中显示备份过程的进度(为此我使用http://www.wisesoft .co.uk / articles / tsql_backup_restore_progress.aspx )。 或者我应该使用Backgroundworker控件并在backgroundjob(自己的线程)中运行SP?

SqlCommand您可以使用BeginExecuteNonQueryEndExecuteNonQuery异步运行命令。 后者将阻止直到完成。 但是,这不会报告服务器有关备份如何进展的进度 – 我会使用选取框进度条。

为了避免EndExecuteNonQuery阻止你的UI(取决于你如何处理它),你需要一个后台线程。 如果您使用它,那么您也可以不使用BeginXXX EndXXX方法并在后台线程上同步执行 – BackgroundWorker最适合这个。

为了避免在UI中使用后台线程,而不是在EndXXX上阻塞,您需要注册回调并处理结果事件(在此事件处理程序中调用EndXXX ,但它将立即返回)。

更新:根据注释,对于SQL命令/连接内容的异步调用,您需要在连接字符串中指定尽可能多的内容:

https://www.connectionstrings.com/sql-server-2008

 Server=myServerAddress; Database=myDataBase; Integrated Security=True; Asynchronous Processing=True; 

或者在使用连接字符串构建器的代码中:

 builder.AsynchronousProcessing = true; 

检查以下链接:

无论如何,我会在一个单独的线程中完成它,所以我可能会采用BackgroundWorker方法。

上述就是C#学习教程:C#中SQL Server存储过程的异步调用分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1301132.html

(0)
上一篇 2023年1月8日
下一篇 2023年1月8日

精彩推荐