c#winform如何在线程池中创建多个线程执行同一个方法

如题所述

第1个回答  推荐于2016-06-11
System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(method))

method为你定义的方法,此为无参。
上面为调用线程池执行指定的方法的例子。
创建多个怎么做,你懂的。追问

我说的是执行同一个方法,需要使用LOCK等锁 最好是无锁的技术来创建多个线程执行同一个方法,就是调用同一个方法体,但是又互不影响,又能同步执行

本回答被提问者和网友采纳
第2个回答  2012-09-18
这是基本的操作方法,C#宝典就这样的安例。其实很简单的。
第3个回答  2012-09-17
我有例子要不要追问

发来看看

c#中,怎么将一个类里面的所有方法一次性添加到线程池的队列中
你可以做个数组把方法放进去,然后用循环调用即可 void m1(object obj) { } void m2(object obj) { } void Main() { var delegateArray = new WaitCallback[] { m1, m2 };\/\/多个方法只要放到这数组里即可 foreach (var item in delegateArray) { Thread...

C# 创建2个线程挂起,让这个线程内的不同事件每隔5秒执行一次,怎么实现...
不要使用Suspend和Resume方法来同步线程活动。你可以不知道它是什么代码执行线程挂起。如果挂起持有锁的线程的安全权限评估期间,AppDomain中的其他线程可能被阻止。如果线程正在执行一个类的构造函数把它挂AppDomain中尝试使用类其他线程将被阻塞。因此,它是容易出现僵局。这是他的过时的原因。所以只要你不使用...

关于C# form 的创建线程的问题.
如果你用 button1仅创建一次线程, 那可以把这个线程放在 form 里进行声明, 在 button1 的事件里再实例化这个线程, 这样整个 form 里都可以访问到, 不需要静态.如果可能会创建多次线程, 可以在 form 里实例一个 List 对象, 然后在 button1 的事件里每次创建线程时都添加到 List 里, 以便 button2 ...

C# 使用线程池,设置每个线程的执行时间,过了时间强制结束
先建一个类下面的成员,来存放进程 List<Thread> pool = new List<Thread>();在需要启动你的方法的时候建进城 Thread t = new Thread(new ThreadStart(getHtmlContent));pool.Add(t);t.Start();给类加一个Timer System.Timers.Timer timer = new Timer();timer.Interval = 30000;timer.Elaspe...

c#编写了一个多线程程序但是出现40个线程同时运行就自动关闭程序但如果...
楼上正解,不过也可以自己写个线程池来管理和调度你的线程,你这种情况就是一下子运行太多线程的过,可以让线程以队列的形式一个一个执行,并发最好不要太多,CLR有线程管理和控制机制的,不能无限制的并发线程。

C# 使用线程池设置每个线程的执行时间,怎样设置结束时间?
先建一个类下面的成员,来存放进程 List<Thread> pool = new List<Thread>();在需要启动你的方法的时候建进城 Thread t = new Thread(new ThreadStart(getHtmlContent));pool.Add(t);t.Start();给类加一个Timer System.Timers.Timer timer = new Timer();timer.Interval = 30000;timer.Elasp...

C#线程池同一个时间跑10个线程怎么做
你有几个处理器核心,就能同时跑几个线程。同一个时间内能跑多少个线程,是受你处理器核心数限定的,跟软件无关。

c#使用线程还是线程池更好一点
如果你不需要对线程进行太复杂的控制,只是启动线程后续基本不再对它进行什么操作的话,选 线程池。线程池会根据需要创建新的线程,也就是说线程池不一定会开一个新的线程,而使用前者是一定会新开一个线程。线程开得过多,程序的运行效率是会下降的。

请问C#中使用线程池,这样的使用方式(下图)正确吗?后台有三个方法需要...
首先程序创建了一个 ManualResetEvent 对象,该对象就像一个信号灯,可以利用它的信号来通知其它线程。本例中,当线程池中所有线程工作都完成以后,ManualResetEvent 对象将被设置为有信号,从而通知主线程继续运行。ManualResetEvent 对象有几个重要的方法:初始化该对象时,用户可以指定其默认的状态(有信号\/...

c#线程池如何控制并发最大线程数
1. 实验目的:使用线程池的时候,有时候需要考虑服务器的最大线程数目和程序最快执行所有业务逻辑的取舍。并非逻辑线程越多也好,而且新的逻辑线程必须会在线程池的等待队列中等待 ,直到线程池中工作的线程执行完毕,才会有系统线程取出等待队列中的逻辑线程,进行CPU运算。2. 解决问题:如果不考虑服务...

相似回答