VB.NET 简单多线程

最近才学的VB.NET还希望大家多帮忙是这样的我想有个数组里面是一到一百的数字然后我想采用多线程的方法,每个线程从这数组取十个数然后分别平方再放到listbox1里面去请... 最近才学的VB.NET 还希望大家多帮忙

是这样的 我想有个数组 里面是一到一百的数字

然后我想采用多线程的方法,每个线程 从这数组取十个数 然后 分别平方 再放到listbox1 里面去

请问如何编写 谢谢!
QQ 232789935 请加 我 ~~

我想问下ByVal e As System.EventArgs) 中的E 是什么用 后面的sub是怎么传递他的数值的
展开
 我来答
zxpmine
2010-06-26 · 超过24用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:70.6万
展开全部

多线程一般是不推荐用的,因为线程之间如果有共享资源的话会引起竞争,需要加锁处理;而且线程间没有时序关系,所以你在调试中可能会出现异步处理结束顺序与开始处理顺序不一致的情况(我在调试中已经发现该问题)。

针对你提出的这个问题,采用了多线程处理,利用的是BackgroundWorker也就是异步处理控件进行了处理。

代码已经经过调试通过。欢迎交流,如有问题,留下QQ或其他联系方式。

代码如下,并附程序截图。

‘---------------------------------------------------

Imports System.ComponentModel '导入异步控件命名空间

Public Class Form1

    Private howmany As Integer = 10

    Private AnalysisNumber(0 To howmany - 1) As BackgroundWorker

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        ListBox1.Items.Clear()

        creatNewBackgroundWorker()

        addHandle()

        startWork()

    End Sub

    Private Sub creatNewBackgroundWorker()

        For i As Integer = 0 To AnalysisNumber.Length - 1

            AnalysisNumber(i) = New BackgroundWorker

        Next

    End Sub

    Private Sub addHandle()

        For i As Integer = 0 To AnalysisNumber.Length - 1

            AddHandler AnalysisNumber(i).DoWork, AddressOf AnalysisNumber_DoWork

            AddHandler AnalysisNumber(i).RunWorkerCompleted, AddressOf AnalysisNumber_RunWorkerCompleted

        Next

    End Sub

    Private Sub startWork()

        For i As Integer = 0 To 9

            Dim temp(0 To 9) As Integer

            For j As Integer = 1 To 10

                temp(j - 1) = 10 * i + j

            Next

            AnalysisNumber(i).RunWorkerAsync(temp)

        Next

    End Sub

    Private Sub AnalysisNumber_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)

        Dim data As Integer()

        data = CType(e.Argument, Integer())

        Dim temp As Integer

        For i As Integer = 0 To data.Length - 1

            temp = data(i)

            data(i) = temp * temp

        Next

        e.Result = data

    End Sub

    Private Sub AnalysisNumber_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs)

        Dim data As Integer()

        data = CType(e.Result, Integer())

        For i As Integer = 0 To data.Length - 1

            ListBox1.Items.Add(data(i))

        Next

    End Sub

End Class

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式