C# 3.0 如何同时执行不同的方法?

C# 3.0 如何同时执行不同的方法?,c#-3.0,C# 3.0,在我的应用程序中,我使用了一个数据集和如下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);

在我的应用程序中,我使用了一个数据集和如下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是业务逻辑层中存储过程的参数。到目前为止,我还没有实现任何线程概念,所以它们都是一个接一个地执行的。这需要很多时间才能在数据集中获得结果集

如何同时执行上述4种方法

帮帮我

问候,,
N.SRIRAM

如果您的businesslayer执行某种sql并返回一个数据集,那么您可以重写该数据集,以便一次批处理执行所有sql语句;将每个单独的sql/sproc调用与


结果数据集将为每个单独的sql提供一个datatable。

因为您使用的是.NET 3,所以您可以使用,因为这将处理回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可以封装存储过程随后将访问的参数,或者您可以传递带有参数的委托,这些参数随后可以在BackgroundWorker中调用。无论哪种方式,BackgroundWorker在本例中都应足以提供简单的线程行为。

首先,需要考虑的事情很少:

这些方法永远不会同时执行 总执行时间为 可能比什么时候大 按顺序执行。 您应该评估订单是否正确 执行程序是相关的。 如果这不是问题,例如,如果您只想在后台处理呼叫,那么有几个选项。最简单的方法可能是使用threadpool、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);.

在带有代码的行的开头使用4个空格来应用格式。这将使每个人都更容易阅读你的问题。