VB.Net 如何将某个Sub单独在新的线程中运行

我的代码里有一个Sub要进行非常多运算,运行时严重影响其他代码的执行,导致比较严重的卡顿所以我想用多线程,让那个Sub单独一个进程运行我用的是Vs2010,网上找的多线程... 我的代码里有一个Sub要进行非常多运算,运行时严重影响其他代码的执行,导致比较严重的卡顿
所以我想用多线程,让那个Sub单独一个进程运行
我用的是Vs2010,网上找的多线程创建的代码像
Dim Thread1 As New System.Threading.Thread(AddressOfTasks.SomeTask)
都提示错误,请问正确代码要怎么写?
还有我的Sub是有传输几个值如Public Sub CountProbability(ByVal Type As Integer),而创建线程好像Sub名后不能带括号,这又该如何解决?
展开
 我来答
wumingchenxin
2015-04-14 · TA获得超过1271个赞
知道大有可为答主
回答量:1491
采纳率:87%
帮助的人:240万
展开全部
dim td1 as Thread=New Thread(New ParameterizedThreadStart(sub名称),
td.Start(参数obj)

参数obj ,如果比较多,最好封装到一个类中,然后,到线程中,在强制转为你的类。
sub CountProbability(para as object) //没试过能不能直接写参数。
dim bb as 参数类`=参数obj 或者 para
end sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FMUD1
2015-04-12 · TA获得超过1008个赞
知道大有可为答主
回答量:1289
采纳率:71%
帮助的人:905万
展开全部
你要的是委托线程。
线程可以接受object[]参数。
更多追问追答
追问
请问具体要怎么写?能给个示例么?
追答
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim th As New Threading.Thread(New System.Threading.ParameterizedThreadStart(AddressOf threadsub))
Dim th1 As New Threading.Thread(New System.Threading.ParameterizedThreadStart(AddressOf Invokesub))'如果要用的是控件的参数,需要委托。
th1.Start({20, TextBox2})
End Sub
Public Delegate Sub Dgsub(obj As Object)
Public Sub Invokesub(obj As Object)
Dim dg As New Dgsub(AddressOf threadsub)
Me.Invoke(dg, obj)
End Sub
Private Sub threadsub(obj As Object)
If obj.GetType.Name.EndsWith("[]") Then
'多参数
Dim arg As Object() = obj
If arg.Count = 2 Then '2个参数
End If
Else
'单参数
End If
End Sub
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式