您的位置:程序门 -> .net技术 -> vb.net



请问各位怎实现:点击按键启动新线程,再点击一下则关闭上一线程(即使任务还未完成),紧接着又一启动新线程


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请问各位怎实现:点击按键启动新线程,再点击一下则关闭上一线程(即使任务还未完成),紧接着又一启动新线程[已结贴,结贴人:forkon]
发表于:2007-06-17 00:00:50 楼主
如题所示.谢谢!(环境vb.net)
发表于:2007-06-17 00:08:081楼 得分:6
这样做不是很好。最好考虑在线程里用线程同步方式,实现功能切换,一定要这么做,就把线程对象保存起来,判断
isactive,就kill掉。不论如何都重新启动。
如果不知道如何做。再回复,我再贴给你代码。
发表于:2007-06-17 00:25:242楼 得分:0
我想在一个新线程启动后kill掉以前所有的线程(也许不止一个,也不管它们是否都完成的任务),最好有代码啰,看你的了
发表于:2007-06-17 16:18:143楼 得分:0
没下文了吗
发表于:2007-06-18 12:02:564楼 得分:18
private   thlist   as   new   list(of   thread)
 
private   sub   button3_click(byval   sender   as   object,   byval   e   as   eventargs)
        dim   th   as   new   thread(new   parameterizedthreadstart(addressof   me.threadproc))
        me.thlist.add(th)
        th.start(me.thlist.count)
end   sub
 
private   sub   button4_click(byval   sender   as   object,   byval   e   as   eventargs)
        do   while   (me.thlist.count   >   0)
                if   me.thlist.item(0).isalive   then
                        me.thlist.item(0).abort
                        me.thlist.removeat(0)
                end   if
        loop
end   sub

private   sub   threadproc(byval   obj   as   object)
        dim   i   as   integer   =   cint(obj)
        do   while   true
                mybase.invoke(new   mydeleage(addressof   me.addthreadid),   new   object()   {   i   })
                thread.sleep(50)
        loop
end   sub

private   sub   addthreadid(byval   i   as   integer)
        me.textbox1.text   =   (me.textbox1.text   &   i.tostring)
end   sub
发表于:2007-06-18 12:04:185楼 得分:0
提问的人,最好不要显示出不耐烦的太度。贴代码也是最不愿意做的事情。告诉你做法了。你自己搜索一下都不愿意。实在说不过去。
发表于:2007-06-18 13:25:246楼 得分:1
楼上说的对!!!
发表于:2007-06-22 10:31:277楼 得分:0
我在这里很感谢wuyazhe(wyz&xyl)的提点,我以后一定会认真跟进.不过,老实说我在提问之前已经搜查过很多资料了,也已认真思考过了,我并不是一遇到问题就来我这里提问的.很感谢wuyazhe(wyz&xyl)提供的代码,我的问题得以解决.也很感谢楼上其它朋友的帮助.


快速检索

最新资讯
热门点击