[VB.net] threaded textbox tekst toevoegen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 06:46

Damic

Tijd voor Jasmijn thee

Topicstarter
In mijn Telemeter Indicator programma maak ik gebruik van een backgroundworker zodoende als er iets mis gaat (http blijft hangen ofzo) dan kan het programma de thread afbreken. Nu maak ik gebruik van een log genaamd sLog (string) deze vul ik en als de gebruiker het logboek opend word deze ingelezen in een textbox (frmlog.txtlog).
Nu het probleem is als het logboek openstaat dan word de tekst niet toegevoegd. Dit heb ik opgezocht en blijkbaar moet je die dan eerst invoken en hangt je textbox aan de 2de thread en kan die zo worden bijgevuld.
Nu dit lukt me niet, de waarde van invokerequired blijft op false staan. Wat dus niet klopt. Iemand dat me een duw in de juiste richting kan geven?

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Sub Add2Log(ByVal sInput As String)
        sInput = "[" & Date.UtcNow.ToString("dd/MM/yyyy HH:mm:ss") & "UTC] " & sInput.Replace(Environment.NewLine, "") '.Replace(vbCr, "")'.Replace(vbLf, "")
        sLog &= IIf(sLog <> "", Environment.NewLine, "") & sInput
        If bShowLog Then 'word gezet als het logboek word geopend
            Add2LogText(sInput)
        End If
    End Sub 
   Private Delegate Sub SetTextCallback(ByVal txt As String)
    Private Sub Add2LogText(ByVal txt As String)
        Try
            If frmLog.txtLog.InvokeRequired Then
                frmLog.txtLog.Invoke(New SetTextCallback(AddressOf Add2LogText), New Object() {txt})
            Else
                frmLog.txtLog.AppendText(IIf(frmLog.txtLog.Text <> "", Environment.NewLine, "") & txt)
            End If
        Catch ex As Exception
            Console.WriteLine("Add2logtext: " & ex.Message)
        End Try
        '  Console.WriteLine("Add2logtext: " & frmLog.txtLog.InvokeRequired)
    End Sub

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Damic schreef op zaterdag 17 oktober 2015 @ 18:24:
Nu dit lukt me niet, de waarde van invokerequired blijft op false staan. Wat dus niet klopt.
Trust me; die invokerequired klopt heus wel. De kans dat jij iets verkeerd doet is vele malen groter ;)
Heb je al eens gewoon gedebugged (Debuggen: Hoe doe ik dat?)? Gekeken of txt wel bevat wat je verwacht? Wat is het nut van die try/catch eromheen en wordt die catch nog getriggerd? Ik zie eigenlijk bar weinig van wat je zelf al geprobeerd zou hebben; je hebt InvokeRequired gevonden, dat geïmplementeerd en toen...?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 06:46

Damic

Tijd voor Jasmijn thee

Topicstarter
Ja sorry. De code komt van het web 99% overgenomen: http://stackoverflow.com/...-visual-basic-vs-2012-v11 (zie accepted answer) vermits ik met een vaste textbox werk heb ik die variabele (TB) eruit gesmeten, dit mag normaal geen problemen geven.

In txt zit wel degelijk tekst, nl de bewerkte tekst van lijn 2. De try catch heb ik er rond gezet omdat ik dacht dat er een fout in zat, niet dus. Hij doet telkens de appendtext maar zou dus eerst de invoke moeten doen en daarna pas de appendtext, als ik het goed heb.

Als ik een breakpoint zet op lijn 11 (invokerequired) en lijn 19 oncommentaar, daarna dan stop op lijn11 en met de muis over invokerequired gaan krijg ik de waarde True te zien maar als ik dan gewoon verder laat doen gaat ie gewoon langs appendtext en wat later krijg ik telkens Add2logtext: false in het console te zien.

Kan dit komen omdat het form al openstaat en dus al op een andere thread draait of is er wat anders aan de hand?

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag