2011-01-25 84 views
1

在我的應用程序中,我使用了一個數據集和4個方法,如下所示。我怎樣才能同時執行不同的方法?

Dataset ds=new Dataset(); 
ds=businesslogiclayerObject.method1(a,b,c,d); 
ds=businesslogiclayerObject.method2(a,b,c,d,e); 
ds=businesslogiclayerObject.method3(a,b,c,d,e,f); 
ds=businesslogiclayerObject.method4(a,b,c,d,e,f,g,h); 

(A,B,C,d,E,F,G,H)的參數,以存儲過程中Businesslogic層。到目前爲止,我沒有實現任何線程概念,因此它們正在逐一執行。這需要花費很多時間才能在數據集中獲取結果集。

如何在同一時間執行4種以上的方法?

幫助我。

問候, N.SRIRAM

+0

使用4個空格對他們申請格式。這會讓大家更容易閱讀你的問題。 – Kendrick 2011-01-25 17:20:12

回答

0

由於您使用的是.NET 3,因此您可以使用BackgroundWorker,因爲這樣可以解決您的UI線程的編組工作以及一些其他線程複雜性問題。它不會照顧鎖定;所以一定要根據需要解決鎖定問題。

BackgroundWorker worker = new BackgroundWorker(); 
worker.DoWork += new DoWorkEventHandler(OnGrabData); 
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(OnGrabDataCompleted); 
worker.RunWorkerAsync(new DataClass(a,b,c,d,e,f,g)); 

DataClass可以封裝您的參數,你的存儲過程將隨後訪問或者或許你可以通過一個delegate與能那麼BackgroundWorker內調用的參數。無論哪種方式,BackgroundWorker應該足以在這個例子中提供簡單的線程行爲。

0

,如果你的「businesslayer」執行某種SQL數據庫和返回,你可以重寫一個批次執行所有SQL語句的數據集;分離每個單獨的sql/sproc調用;

結果數據集將爲每個單獨的sql有一個數據表。

0

首先,有考慮幾件事情:

  1. 的方法將永遠不會真正執行的同時
  2. 總執行時間將 可能是當 順序執行比我的大。
  3. 您應該評估執行的訂單 是否相關。

如果這不是問題(例如,如果你只是想在後臺處理呼叫),那麼有幾個選項。最簡單的可能是使用線程池,使用ThreadPool.QueueUserWorkItem()或使用BackgroundWorker

根據您的具體需求,您可以獲取所需的參數列表或字典,或定義一個單獨的狀態對象,這樣做:在與代碼行的開頭

Dictionary<string, object> parameters = new Dictionary<string, object> 
parameters.Add("a", 42); 
parameters.Add("b", new object()); 
parameters.Add("c", null); 
ThreadPool.QueueUserWorkItem((state) => { do stuff with "state" }, parameters);. 
相關問題