Die Community zu .NET und Classic VB.
Menü

VB.NET-Tipp 0145: Parameterisierte Threads

 von 

Beschreibung

In diesem Tipp wird gezeigt, wie man Parameterblöcke ohne Verwendung von Delegaten an Thread-Methoden übergibt. Die Grundlage dafür bildet der MSDN-Artikel ParameterizedThreadStart.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Framework-Version(en):

.NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5, .NET Compact Framework 1.0, .NET Compact Framework 2.0, .NET Framework 4

.NET-Version(en):

Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008, Visual Basic 2010

Download:

Download des Beispielprojektes [8,06 KB]

' Dieser Quellcode stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.

' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!

' Projektversion:   Visual Studio 2008
' Option Strict:    Aus
' Option Explicit:  An
' Option Infer:     An
'
' Referenzen: 
'  - System
'  - System.Data
'  - System.Deployment
'  - System.Xml
'  - System.Core
'  - System.Xml.Linq
'  - System.Data.DataSetExtensions
'
' Imports: 
'  - Microsoft.VisualBasic
'  - System
'  - System.Collections
'  - System.Collections.Generic
'  - System.Data
'  - System.Diagnostics
'  - System.Linq
'  - System.Xml.Linq
'

' ##############################################################################
' ######################## ParameterizedThreadDemo.vb ##########################
' ##############################################################################
Option Strict On

Imports System
Imports System.Console
Imports System.Threading

Public Class ParameterizedThreadDemo
    Public Shared Sub Main()
        ' Parameter zu Object verpacken
        Dim objToParse = New Object() {New String() {"param1", _
                                                     "param2", _
                                                     "param3", _
                                                     "usw."}, _
                                       New Int32() {2, 5, &HCAFE}}
        ' Nun haben wir ein Object-Array mit 2 Einträgen: ein String- und 
        '  ein Integer-Array 

        ' Neuen Thread beschwoeren
        Dim trdParam As Thread = New Thread(AddressOf ParamThread)

        ' Object-Array übergeben 
        '  Da Option Strict aktiv ist, auf jeden Fall Basistyp Object verwenden
        trdParam.Start(objToParse)
        ReadKey()
    End Sub

    Public Shared Sub ParamThread(ByVal objData As Object)
        If objData IsNot Nothing Then

            Dim Args = DirectCast(objData, Object())

            ' Objekt-Array auf die entsprechenden Typen casten
            ' An erster Stelle steht das String-Array...
            Dim strParam() As String = CType(Args(0), String())

            ' ... und an zweiter das Integer-Array
            Dim intParam() As Int32 = CType(Args(1), Int32())

            ' Ausgabe der zwei Parameter Arrays
            Write("{" & strParam(0).ToString)
            For i As Int32 = 1 To strParam.GetUpperBound(0)
                Write(", " & strParam(i).ToString)
            Next
            WriteLine("}")

            Write("{" & intParam(0).ToString)
            For i As Int32 = 1 To intParam.GetUpperBound(0)
                Write(", " & intParam(i).ToString)
            Next
            WriteLine("}")
        End If
    End Sub
End Class

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.