queueuserworkitemc#线程池类ThreadPool的QueueUserWorkItem方法不能调用有参数的方法吗?

queueuserworkitem  时间:2021-01-17  阅读:()

实现多线程都有哪几种方法

1:UI线程。

这个线程是操作系统自动创建的,你画了个winform,那么程序一启动,自然有了这么个线程。

值得注意的是,你添加一个Timer控件,现实的多线程,实际上,依然在UI线程里。

只是定时被Timer夺去控制权而已,本质上依然是单线程。

另一个线索也可以论证:本来非UI线程想更新UI界面,是需要利用delegate,involk等来实现的,但是在timer控件的线程里,是不需要的。

2:Threadthread=newThread(obj.functionName);thread.start();这样自定义的线程是真正的多线程,它的使用也是最灵活的。

不像Timer线程,精确度只有50ms。

值得注意的是:如果需要启动的线程函数是带输入参数的,怎么?有两个法:A:你不是启动obj对象里的函数吗?在thread.start();之前,你先添加这句话MyObjectobj=newMyObject(inta,intb);这样,obj.functionName函数里可以直接使用a和b了。

还有个方法,就是利用委托封装函数,然后thread.start(参数);具体代码如下:[ComVisibleAttribute(false)]publicdelegatevoidParameterizedThreadStart(Objectobj)//这个Thread类的构造方法的定义如下:publicThread(ParameterizedThreadStartstart);publicstaticvoidmyStaticParamThreadMethod(Objectobj){Console.WriteLine(obj);}staticvoidMain(string[]args){Threadthread=newThread(myStaticParamThreadMethod);thread.Start("通过委托的参数传值");}3:利用threadpool线程池技术。

threadpool的主要原理是池里面的线程不会完成一个任务就消亡,而是会继续执行其他的任务,这减少了线程的消亡和生成的代价。

主要是ThreadPool.QueueUserWorkItem()和ThreadPool.RegisterWaitForSingleObject(···)两个静态函数。

具体如下:QueueUserWorkItem的使用:staticvoidThreadProc(ObjectstateInfo){Console.WriteLine("Hellofromthethreadpool.");}Main函数里ThreadPool.QueueUserWorkItem(newWaitCallback(ThreadProc));即可。

(注意WaitCallback系统委托),它的功能就像第2种方法里提到的newthread。

那么RegisterWaitForSingleObject是干什么的呢?这个方法的做用是向线程池添加一个可以定时执行的方法。

有点像第一种方法里提到的timer线程,却不属于UI线程。

具体的使用如下:AutoResetEventwait=newAutoResetEvent(false);objectstate=newobject();ThreadPool.RegisterWaitForSingleObject(wait,newWaitOrTimerCallback(test),state,5000,false);//5000是间隔调用的时间,也就是wait变量卡住的timeout时间(我觉得内部是这样实现的)wait.Set();//如果有set这句话,那么第一次执行不用等5秒,则直接执行目标函数,否则没这句话,第一次执行要等5秒的。

还有一个要注意:我平常使用的是ManualResetEvent,但在threadpool里,首先要选的是AutoResetEvent,因为AutoResetEvent能自动reset,所以下一次间隔来了,又要重新等待5秒钟,达到定时器的目的。

如果是ManualResetEvent,要么一次执行不了(初始值为false),要么不间断的玩命执行。

ManualResetEvent和AutoResetEvent的另一个重要区别是前者能一次唤醒多个线程,而后者一次只能唤醒一个线程。

其实RegisterWaitForSingleObject函数的使用有点想我封装好的MyTimer类的实现了:我里面的while死循环里用了个wait.waitone(2000,false);即可。

对了,说到这里,RegisterWaitForSingleObject函数实现的定时器,如果手动停止呢?这要用到Unregister函数:RegisteredWaitHandlerw=ThreadPool.RegisterWaitForSingleObject(wait,newWaitOrTimerCallback(test),state,3000,false);rw.Unregister(wait);嗯讨论了这么多线程的东西,干脆再说一个小点:Thread.IsBackground=true的时候,指示该线程为后台线程。

后台线程将会随着主线程的退出而退出

winform中怎么使用threadpool

ThreadPool.QueueUserWorkItem(new WaitCallback(方法名), 参数); 就这样就可以用了!!百度一下就知道了撒!!

waitcallback()可以理解为 新建了一个线程么?

WaitCallback 委托是将任务排入队列以供线程池执行, ThreadPool.QueueUserWorkItem方法在线程池中创建一个线程池线程来执行指定的方法(用委托WaitCallback来表示),并将该线程排入线程池的队列等待执行。

你这么理解可以~~

c#线程池类ThreadPool的QueueUserWorkItem方法不能调用有参数的方法吗?

可以的,它有两有重载方式。

调用时一种带参数,一种不带参数 而且你看回调函数的定义就是带参数的。

如下 QueueUserWorkItem(WaitCallback)? QueueUserWorkItem(WaitCallback, Object) [ComVisibleAttribute(true)] public delegate void WaitCallback( Object state ) // //library/vstudio/system.threading.threadpool.queueuserworkitem(v=vs.100).aspx // //library/vstudio/system.threading.waitcallback(v=vs.100).aspx

PIGYUN:美国联通CUVIPCUVIP限时cuvip、AS9929、GIA/韩国CN2机房限时六折

pigyun怎么样?PIGYunData成立于2019年,2021是PIGYun为用户提供稳定服务的第三年,目前商家提供香港CN2线路、韩国cn2线路、美西CUVIP-9929、GIA等线路优质VPS,基于KVM虚拟架构,商家采用魔方云平台,所有的配置都可以弹性选择,目前商家推出了七月优惠,韩国和美国所有线路都有相应的促销,六折至八折,性价比不错。点击进入:PIGYun官方网站地址PIGYUN优惠...

轻云互联-618钜惠秒杀,香港CN2大宽带KVM架构云服务器月付22元,美国圣何塞精品云月付19元爆款!海量产品好货超值促销进行中!

官方网站:点击访问青云互联活动官网优惠码:终身88折扣优惠码:WN789-2021香港测试IP:154.196.254美国测试IP:243.164.1活动方案:用户购买任意全区域云服务器月付以上享受免费更换IP服务;限美国区域云服务器凡是购买均可以提交工单定制天机防火墙高防御保护端口以及保护模式;香港区域购买季度、半年付、年付周期均可免费申请额外1IP;使用优惠码购买后续费周期终身同活动价,价格不...

企鹅小屋6折年付240元起,美国CN2 GIA VPS促销,独享CPU,三网回程CN2 GIA

企鹅小屋怎么样?企鹅小屋最近针对自己的美国cn2 gia套餐推出了2个优惠码:月付7折和年付6折,独享CPU,100%性能,三网回程CN2 GIA网络,100Mbps峰值带宽,用完优惠码1G内存套餐是年付240元,线路方面三网回程CN2 GIA。如果新购IP不能正常使用,请在开通时间60分钟内工单VPS技术部门更换正常IP;特价主机不支持退款。点击进入:企鹅小屋官网地址企鹅小屋优惠码:年付6折优惠...

queueuserworkitem为你推荐
个性qq资料QQ个性资料吴晓波频道买粉《吴晓波频道》《罗辑思维》《专栏精粹》怎么评价?9flashIE9flash模块异常。如何快速收录如何让百度快速收录小米手柄买了个小米蓝牙手柄,游戏是可以玩但是按键位置不舒服,怎么可以改按键宽带接入服务器用wifi连不上服务器怎么办微信电话本怎么用微信电话本怎么使用呀,我的电话号码是存在手机里面,用这个软件就读取不了电话,我是第一次使用声母是什么声母是什么?单韵母是什么微信怎么看聊天记录微信在手机上怎么查看聊天记录office2007简体中文版office2007下载安装
域名备案中心 smartvps 紫田 payoneer 2017年黑色星期五 lamp配置 dropbox网盘 java空间 股票老左 中国电信测速网 新睿云 华为云盘 腾讯总部在哪 四川电信商城 免费ftp 英雄联盟台服官网 湖南idc 免费蓝钻 万网注册 存储服务器 更多