2011-01-25 76 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);. 
相关问题