2011-03-10 68 views
1

如何运行的异步调用虽然外部C# ADO.Net? 如何异步执行查询,BeginExecuteQuery ??。异步调用,虽然外部SQL Server

你必须运行一个例子...

我已经正在执行几个插入语句的存储过程,该值从表中选择,因为它们是独立的,TABLE_A, TABLE_B,我想执行...

EXEC ('SELECT * FROM .. INTO TABLE_A') 

and 

EXEC ('SELECT * FROM .. INTO TABLE_B') 
+0

一个选择是使用一个BackgroundWorker。请解释你的上下文... – 2011-03-10 00:06:48

+0

更新的问题... – cMinor 2011-03-10 00:10:35

回答

0

如果我理解你想要做正确的,那么,你可以做这3个命令,的ExecuteReader,和的ExecuteNonQuery ExecuteXmlReader异步调用什么。异步版本有一个开始/结束部分,例如BeginExecuteReader,EndExecuteReader,并会为你以后的工作。就如何处理这些命令的返回而言,您有几个选项。

因此,您可以使用sqlcommand.BeginExecuteReader激发多个查询,例如,然后在发出sqlcommand.EndExecuteReader时如何处理/知道它何时完成。选项简要介绍了一些说明:

  1. 异步轮询 - 基本上发送SQL命令(一个或多个),然后反复检查SqlAsyncResult的IsCompleted属性,直到它返回。
  2. 异步回调 - 你提供回调例程作为参数与SQL命令一起利用该方法,例如onSqlQueryComplete(有点像常规事件处理),并在完成时调用。
  3. 异步等待 - 如果您想等待并监视您的sql调用过程/进度,则使用此等待。

每个异步选项都有优点/缺点,具体取决于您想要实现的目标。使用上面的2号回调选项,pseduo代码会看起来像:

command = (Build all sql command stuff) 
AsyncCallback callback = new AsyncCallback(HandleSqlCallback); 
command.BeginExecuteReader(callback, command); 

command.BeginExecuteReader() 

method HandleSqlCallback(IAsyncResult result) { 
do stuff when sql done 
command.EndExecuteReader(result) 
} 

微软有比这更好,更完整的例子,但是这给你的格式的总体思路。 MSDN链接SqlCommand.BeginExecuteReader Method