CSDN-CSDN社区-.NET技术-VB.NET

收藏 多线程操作这样写好不好?[问题点数:50,结帖人:newand]

  • newand
  • (玄飞)
  • 等 级:
  • 结帖率:
楼主发表于:2008-07-07 21:46:53
请问我以下面这样的方式处理线程好不好?
会有什么可能的错误,应该怎么改进,谢谢了。

VB.NET code
Private Sub DoOutput() Dim thrOutput As New Thread(AddressOf DoOutputThread) thrOutput.Start(excel) End sub Private Sub DoOutputThread(ByVal obj As Object) Try '操作 Catch ex As Exception '处理 Finally '终止当前线程 Thread.CurrentThread.Abort() End Try End Sub
回复次数:10
  • skigil用户头像
  • skigil
  • (空气人偶)
  • 等 级:
#1楼 得分:10回复于:2008-07-07 23:26:15
不错,检查完毕,结论是:好!
但建议只将此种多线程用于计算.
#2楼 得分:0回复于:2008-07-08 09:26:38
引用 1 楼 skigil 的回复:
不错,检查完毕,结论是:好!
但建议只将此种多线程用于计算.

  • fairy4用户头像
  • fairy4
  • (只有一點點)
  • 等 级:
#3楼 得分:0回复于:2008-07-08 11:13:02
引用 2 楼 jerry_zuo 的回复:
引用 1 楼 skigil 的回复:
不错,检查完毕,结论是:好!
但建议只将此种多线程用于计算.


  • fairy4用户头像
  • fairy4
  • (只有一點點)
  • 等 级:
#4楼 得分:0回复于:2008-07-08 11:18:48
DoOutputThread(ByVal obj As Object)
作為委托是不能帶參數的吧?
如果必須帶參數的話,必須從新定義新的委派方法吧!
#5楼 得分:30回复于:2008-07-08 11:50:37
  • newand用户头像
  • newand
  • (玄飞)
  • 等 级:
#6楼 得分:0回复于:2008-07-08 12:31:55
引用 4 楼 fairy4 的回复:
DoOutputThread(ByVal obj As Object)
作為委托是不能帶參數的吧?
如果必須帶參數的話,必須從新定義新的委派方法吧!


可以带参数,而且使用时没出现问题。

引用 5 楼 wood87654321 的回复:
这是基本的多线程应用,这样写很标准,但在很多时候需求比这要复杂,例如,如果DoOutputThread内的工作在程序的很多地方需要重复,你这样写就不得不多次调用DoOutput,并在其中新建Thread实例,开销就会很大。而且,根据我的尝试,Thread.Abort并不十分可靠能瞬间结束线程,如果DoOutput出现快速频繁调用很可能出问题

》如果DoOutputThread内的工作在程序的很多地方需要重复,你这样写就不得不多次调用DoOutput,
》并在其中新建Thread实例
如果多次调用那应该怎么做呢?创建一个全局的变量thrOutput,然后再线程执行完之后再 thrOutput=nothing?

》根据我的尝试,Thread.Abort并不十分可靠能瞬间结束线程,如果DoOutput出现快速频繁调用很可能出问题
《Programming Microsoft Visual Basic 2005—The Language》上面讲在abort时或者,程序块(如DoOutputThread)结束时该线程就会结束。
而你说的快速频繁调用的情况,是不是属于最大线程个数的问题?
  • skigil用户头像
  • skigil
  • (空气人偶)
  • 等 级:
#7楼 得分:0回复于:2008-07-08 14:19:46
上面几位兄弟,汗我干什么?说错了吗?
#8楼 得分:10回复于:2008-07-08 16:45:49
很好, 很强大,小朋友真强
  • taick用户头像
  • taick
  • (上帝的饭碗)
  • 等 级:
#9楼 得分:0回复于:2008-07-08 16:56:10
呵呵~~
#10楼 得分:0回复于:2008-07-29 11:18:44
不懂,学习中...
相关问题
在Stateless Session Bean中启动一新线程这种做法好不好? Java / J2EE ...
这样写一个线程是不是好一点VC/MFC / 进程/线程/DLL - CSDN社区 ...
******如何深入理解事件和消息*******某一个事件发生了,进行特定操作 ...
管道(pipe)的读写是否支持多线程? VC/MFC / 进程/线程/DLL - CSDN社区 ...
多线程程序中非主线程主要来完成什么样的事情 ...
关于连接池的问题:是不是在实际做项目的时候不能用WEBLOGIC自己的 ...