vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
VB .NET - Threading mit Klasse und Parametern ? 
Autor: thE_iNviNciblE
Datum: 27.11.07 19:57

Hallo Liebe Gemeinde,

ich habe da ein kleines Problem.
Einfaches Threading ist wirklich sehr einfach unter .NET, aber ich habe ein Problem.
Ich habe eine Klasse in der sich eine Methode befindet mit der ich große Datenmengen abrufe. Derzeit friert die Anwendung ein, das möchte ich über threading lösen.

Doch wie mache ich den Aufruf, so das die parameter der Methode auch übergeben werden?

Dim Thread As New Threading.Thread(AddressOf Zählen)
das geht soweit aber ich brauche

Dim Thread As New Threading.Thread(AddressOf mycls.Zaehlen(parameter, _
  parameter))
wie lässt sich dies bewerkstelligen ?

Vielen Dank

gruss
jan bludau

Wissen ist Macht !!
-------------------------

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB .NET - Threading mit Klasse und Parametern ? 
Autor: Melkor
Datum: 27.11.07 20:28

    Public Sub tr(ByVal o As Object)
        ' ....
    End Sub
 
    Private Sub Test()
        Dim t As New System.Threading.Thread(AddressOf tr)
        t.Start(irgendeinObjekt)
    End Sub

Those people who think they know everything are a great annoyance to those of us who do - Isaac Asimov

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB .NET - Threading mit Klasse und Parametern ? 
Autor: thE_iNviNciblE
Datum: 27.11.07 21:41

Hallo meister Melkor,

also das beispiel funktionert, so kann ich einer procedure schonmal werte mitteilen.

Aber ich besitze eine klasse

Public Class eBayAPI
 
    Public Function getSellerList(ByRef lvw As ListView, ByVal von As _
      DateTimePicker, ByVal bis As DateTimePicker, ByVal strUserID As String) _
      As Boolean
   ' .............
    end Function 
 
end class
diese methode soll ein eigenständiger Thread werden....

ach wenn ich alles als "Object" deklarieren im Methoden Prototype dann erhalte ich eine verrückte Meldung in der IDE, das dass so nicht gehen kann.

Weiß wer weiter ?

Wissen ist Macht !!
-------------------------

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB .NET - Threading mit Klasse und Parametern ? 
Autor: Melkor
Datum: 27.11.07 22:04

Du musst nur die Werte in eine Structure oder Class packen und das als Parameter übergeben. Du kannst auch eine Klassenmethode aufrufen und die Werte als Klassenvariablen bereitstellen. Diese Methode kannn dann eine beliebige weitere Methode aufrufen. Beliebige Funktionen kannst du nicht direkt aufrufen.

Those people who think they know everything are a great annoyance to those of us who do - Isaac Asimov

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB .NET - Threading mit Klasse und Parametern ? 
Autor: thE_iNviNciblE
Datum: 27.11.07 22:41

hi,

in eine structure bekomme ich noch hin, aber in eine "class packen", das habe ich so noch nie gehört....

hast du evtl. ein kleines beispiel, wäre sehr nett.

Kann bei google nämlich überhaupt nix finden....

gruss
jan

Wissen ist Macht !!
-------------------------

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB .NET - Threading mit Klasse und Parametern ? 
Autor: Melkor
Datum: 28.11.07 09:17

Entweder übergibst du dein Klassenobjekt oder Structure als Parameter mit dem Code oben, in dem Objekt kannst du beliebige Daten haben, die dann dem Thread zur Verfügung stehen, oder du startest eine Klassenmethode als Thread und dann hat der Thread Zugriff auf alle Felder des Klassenobjekts.

    Public Class TObj
        Public Field1 As String
        Public Field2 As Integer
        ' ... usw
 
        Public Sub New(.....)
            ' ... Felder initialisieren
        End Sub
 
        ' Thread-Methode
        Public Sub DoIt()
            ' ....
        End Sub
    End Class
 
    Private Sub Test()
        Dim tobj1 As New TObj(....)
        Dim t As New System.Threading.Thread(AddressOf tobj1.DoIt)
        t.Start()
    End Sub

Those people who think they know everything are a great annoyance to those of us who do - Isaac Asimov

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB .NET - Threading mit Klasse und Parametern ? 
Autor: thE_iNviNciblE
Datum: 28.11.07 15:24

Hallo,

sehr schön.
Ok da hätte ich auch selbst drauf kommen können, Dankeschön
ist das erstmal das ich mich so wirklich mit threading auseinandersetze.

Vielen dank Melkor

ich hab mehrere Methoden die ich von einer Klasseninstanz aufrufen möchte und verschiedenste Parameter haben.
Das Problem liegt darin, das ich die eBay API benutze und diese laut Guidelines es nicht so gerne hat, wenn man jedesmal den "API-Context" neu setzt und inistalisiert....

Lieben gruss
jan

Wissen ist Macht !!
-------------------------

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Probleme... 
Autor: thE_iNviNciblE
Datum: 28.11.07 18:30

Hallo Melkor,

Bei der Variablen "t"

"Fehler bei der Überladungsauflösung, da keine zugreifbare "New" mit diesen Argument aufgerufen werden kann:"

Aufruf:
                Dim clsebay2 As New eBayAPI()
                clsebay2.bis = DatePickerBis
                clsebay2.von = DateTimePickerVon
                clsebay2.lvw = lvweBayLiveList
                clsebay2.strUserID = strINI_eBay.strUserName
                Dim t As New System.Threading.Thread(AddressOf _
                  clsebay2.getSellerList)
                t.Start()
    '##################################################################
    '# >> getSellerList 
    '# 
    '# Beschreibung: Fragt die eBay Verkäuferliste ab.
    '##################################################################
    'Public Function getSellerList(ByRef lvw As Object, ByVal von As Object, 
    ' ByVal bis As Object, ByVal strUserID As Object) As Boolean
 
    Sub getSellerList(Optional ByVal test As String = "")
 
        Try
 
            lvw.Items.Clear()
 
            Dim apicall As GetSellerListCall = New GetSellerListCall(Context)
            apicall.DetailLevelList.Add(DetailLevelCodeType.ReturnAll)
 
            'Pagination is required
            apicall.Pagination = New PaginationType()
            apicall.Pagination.PageNumber = 1
            apicall.Pagination.EntriesPerPage = 200
 
            If strUserID.Length > 0 Then
                apicall.UserID = strUserID
            End If
 
            'MsgBox(von.Text & " " & bis.Text)
 
            apicall.StartTimeFilter = New TimeFilter(von.Value, bis.Value)
            'apicall.EndTimeFilter = New TimeFilter(von.Value, bis.Value)
 
 
            Dim sellerlist As ItemTypeCollection = apicall.GetSellerList()
            Dim item As ItemType
 
            '# Liste der eBay Artikel holen
            For Each item In sellerlist
                Dim listparams(6) As String
 
                listparams(0) = item.ItemID
                listparams(1) = item.Title
                listparams(2) = item.SellingStatus.CurrentPrice.Value.ToString()
                listparams(3) = item.StartPrice.Value
                listparams(4) = item.SellingStatus.BidCount.ToString()
                listparams(5) = "---"
                listparams(6) = Date.Now
 
 
                Dim vi As ListViewItem = New ListViewItem(listparams)
                lvw.Items.Add(vi)
 
            Next item
 
 
        Catch ex As Exception
            Call debug_message(ex.Message, "getSellerList")
            bIsRefreshing_live = False
        End Try
 
 
    End Sub
ich hab in der klasse auch ein sub New() als konstruktor eingebaut.... geht auch nicht...

*grübel*

Wissen ist Macht !!
-------------------------

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB .NET - Threading mit Klasse und Parametern ? 
Autor: thE_iNviNciblE
Datum: 29.11.07 13:42

Hallo nochmal

also .NET wird doch wohl Threading mit Klassen unterstützen, grml...

ich hab schon in VB.NET Büchern gesucht aber die behandeln das Thema leider überhaupt nicht, nur Threading allgemein.

Notiz:

Gute .NET Einführung, auch über Threading

gruss
jan bludau

Wissen ist Macht !!
-------------------------

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel