2011-03-10 66 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