Jag kör en lång kod från en separat tråd, och i den tråden kallar jag på NewStatusMessage() som i sin tur visar ett meddelande och startar en timer som efter 5 sekunder ska ta bort meddelandet. Vilken sorts timer pratar vi om? Finns ett antal olika i .net framework System.Windows.Forms.Timer. Vad finns det för andra timers? Jag funderar på om du inte borde starta den ifrån huvudtråden..? Testa och se ifall det gör någon skillnad Meddelandet som ska visas kommer från den andra tråden. Hur startar jag NewStatusMessage i huvudtråden från tråd 2? Använd .Invoke på formuläret, då kan du anropa med hjälp av delegate en valfri funktion i huvudtråden. Var har du lagt till timer.stop i Timer_Tick ngnstans?? Det ska vara i samband med timer.stop som du tar bort meddelandet.Starta timer från annan tråd
Problemet är att timern aldrig körs så meddelandet finns kvar hur länge som helst. Jag antar att det har att göra med att timer startas från en annan tråd och att den tråden tar slut när koden är klar?
Det blir även samma effekt med en BackgroundWorker.
Tips?
ThomasSv: Starta timer från annan tråd
Sv:Starta timer från annan tråd
Jag har i alla fall dragit ut en sån från Components och lagt koden i som ska ta bort meddelandet i Timer_Tick().
ThomasSv: Starta timer från annan tråd
Sv:Starta timer från annan tråd
ThomasSv: Starta timer från annan tråd
Sv: Starta timer från annan tråd
//Helen
ex: (kommer från en eggklocka(äggklocka) jag gjort till en kund, men exemplet kanske hjälper dig
Private Sub EggTimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles EggTimer.Tick
Dim tmp As Long
If Now.Minute = CurrentStartTime + CurrentTics And Now.Second = CurrentStartTimeSec Then
Label1.Text = (NewTime - CurrentTics).ToString '& My.Resources.strMin 'här kollar jag timer och räknar ner
tmp = Len(Label1.Text)
If tmp = 1 Then
Label1.Text = " " & Label1.Text
End If
CurrentTics += 1
End If
If Trim(Label1.Text) = "0" Then 'Här stoppar jag timmern när ex antal minuter gått det borde vara här du tar bort din text
EggTimer.Stop()
MyPlayer.SoundLocation = "c:/ringin.wav"
MyPlayer.PlayLooping()
End If
End Sub
då kan du i din anrops funktion skriva ngt i den här stilen
Public Sub NewStatusMessageShow(byval mess as string)
EggTimer.Start()
'skriv ut ditt mess där du vill ha det
end sub