uhu*_*uhu 14 c# t-sql sql-server ado.net asynchronous
是否可以通过C#异步调用SQL Server存储过程?
我有一个存储过程,写一个特定数据库的备份(这可能需要很长时间才能完成),我想在Windows窗体中显示备份过程的进度(为此我使用http://www.wisesoft .co.uk/articles/tsql_backup_restore_progress.aspx).或者我应该使用Backgroundworker控件并在backgroundjob(自己的线程)中运行SP?
Ada*_*rth 12
在您的SqlCommand运行中,您可以使用BeginExecuteNonQuery和异步运行命令EndExecuteNonQuery.后者将阻止直到完成.但是,这不会报告服务器有关备份的进展情况 - 我会使用选取框进度条.
为了避免EndExecuteNonQuery阻止你的UI(取决于你如何处理它),你需要一个后台线程.如果您使用它,那么您也可以不使用BeginXXX EndXXX方法并在后台线程上同步执行 - 这BackgroundWorker是最好的.
为了避免在UI中使用后台线程,而不是阻塞,EndXXX您将需要注册回调并处理结果事件(EndXXX在此事件处理程序中调用,但它将立即返回).
更新:根据注释,对于SQL命令/连接内容的异步调用,您需要在连接字符串中指定尽可能多的内容:
http://www.connectionstrings.com/sql-server-2008
Server=myServerAddress; Database=myDataBase; Integrated Security=True; Asynchronous Processing=True;
Run Code Online (Sandbox Code Playgroud)
或者在使用连接字符串构建器的代码中:
builder.AsynchronousProcessing = true;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17873 次 |
| 最近记录: |