Vanuit andere thread data ophalen uit form.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • fleppuhstein
  • Registratie: Januari 2002
  • Laatst online: 07-09 13:37
Een stukje brein breker waar ik niet uit kom.

Ik ben bezig met een applicatie die multithreading is. Threads werken los van elkaar.
Nu is er een thread bij gekomen, welke een html pagina serveerd op een combi van Ip adres en Port.
Alleen deze thread heeft info nodig van Form_Main, als ik deze ophaal blijft de variabele leeg, logisch andere thread mag er niet aankomen. Omgekeerd krijg ik wel werkend data van een andere thread naar het Form_main sturen. Dit allemaal via InvokeRequired.

Nou heb ik dit ook geprobeerd om data op te halen:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Public Sub GetLogItems(ByVal NumberOfItems As Integer)

        ' Declarations.
        Dim LogItems As String
        Dim LogItem() As String
        Dim Length As Integer
        Dim Start As Integer
        Dim ReturnString As String = String.Empty

        ' Set variables
        If Form_Main.TxtBox_LogAll.InvokeRequired Then
            Dim Del As New Form_Main.DelGiveTxtBox_LogAll(AddressOf GetLogItems)
            Form_Main.Invoke(Del, New Object() {NumberOfItems})
        Else
            LogItems = Form_Main.TxtBox_LogAll.Text
            LogItem = Split(LogItems, Chr(10))
            Length = LogItem.Length - 1
            Start = (Length - NumberOfItems)
            If (Start < 0) Then Start = 0

            For X As Integer = Start To Length
                ReturnString += LogItem(X) & "<br>"
            Next

            'Return ReturnString
        End If

    End Sub


Alleen hij blijft leeg, en krijg geen error meldingen. De functie werkt wel goed als ik deze aanroep in main thread. Hij is nu wel tijdelijk even Sub ivm delegate, maar het moet dus wel een function worden.

Google geeft mooie voorbeelden over data pushen van een thread naar een andere, maar ik wil graag data pullen. Iemand tips, of een goede tutorial ?

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:03
Waarom heeft de taak die je op die thread uitvoerd, een dependency naar jouw main form ? Dat zou hij helemaal niet moeten hebben.
Waarom maak je geen 'taak' waarop jouw code op die andere thread uitgevoerd wordt, en voorzie je dat die taak data kan krijgen ipv dat ze 'm zelf moet gaan ophalen.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • fleppuhstein
  • Registratie: Januari 2002
  • Laatst online: 07-09 13:37
Op het form_main word een textlog bijgehouden. Hierbij heb ik in de web-thread de laatste 5 items nodig. Echter deze moeten opgevraagd worden op het moment dat er wordt geconnect naar de juiste poort, dan loopt de function door.

Heb nu al echter een andere aanpak gedaan. Via een public array, met de laatste 5 log items welke steeds wordt verschoven bij een nieuw log item.

Acties:
  • 0 Henk 'm!

  • ATS
  • Registratie: September 2001
  • Laatst online: 18-09 15:14

ATS

fleppuhstein schreef op maandag 17 december 2007 @ 12:48:
Heb nu al echter een andere aanpak gedaan. Via een public array, met de laatste 5 log items welke steeds wordt verschoven bij een nieuw log item.
Dat klinkt niet erg thread save. Wat gebeurt er als er tijdens het veranderen van de logitems ook uitgelezen wordt?

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant