Hallo und schönen guten Abend
Ich habe hier ein Problem, wovon ich nicht weiß ob es ein Timing Problem ist, oder etwas anderes.
Man kann folgendes im Programm anstoßen:
1.) Daten kopieren
2.) Daten zippen
3.) Daten kopieren und zippen gleichzeitig.
Die Funktionen des kopieren und zippen, dabei ist alles OK.
Probleme macht das Anzeigen und Reseten auf dem Form. Wenn beide Task laufen ist es ok. Bei den Einzelläufen gibt es das Problem des nicht anzeigens.
Wenn beide Task laufen Debug:
Wenn nur kopieren läuft kommt dieser Debug:
Wenn nur zippen läuft kommt dieser Debug:
Der relevante Code:
Spoiler anzeigen
Ich habe hier ein Problem, wovon ich nicht weiß ob es ein Timing Problem ist, oder etwas anderes.
Man kann folgendes im Programm anstoßen:
1.) Daten kopieren
2.) Daten zippen
3.) Daten kopieren und zippen gleichzeitig.
Die Funktionen des kopieren und zippen, dabei ist alles OK.
Probleme macht das Anzeigen und Reseten auf dem Form. Wenn beide Task laufen ist es ok. Bei den Einzelläufen gibt es das Problem des nicht anzeigens.
Wenn beide Task laufen Debug:
Wenn nur kopieren läuft kommt dieser Debug:
Wenn nur zippen läuft kommt dieser Debug:
Der relevante Code:
Ausug aus der Class:
Auszug aus dem Form:
Ausug aus der Class:
VB.NET-Quellcode
-
- Friend Event MeldungsID(MeldungID As Integer, Typ As Integer)
- Friend CompletedOperations As Integer
- Friend CompletedOperationType As Integer = -1
- Friend Async Sub ZippAsync()
- Debug.WriteLine("ZippAsync gestartet")
- Dim success As Boolean = Await Threading.Tasks.Task.Run(Function() CallZip())
- Debug.WriteLine("ZippAsync beendet")
- If success Then
- Debug.WriteLine("ZippAsync success:" & success)
- OperationCompleted(0)
- End If
- End Sub
- Friend Async Sub KopiereAsync()
- Debug.WriteLine("KopiereAsync gestartet")
- Dim success As Boolean = Await Threading.Tasks.Task.Run(Function() CallCopy())
- Debug.WriteLine("KopiereAsync beendet")
- If success Then
- Debug.WriteLine("KopiereAsync success:" & success)
- OperationCompleted(1)
- End If
- End Sub
- Friend Sub OperationCompleted(operationType As Integer)
- Debug.WriteLine("InClass-First: " & operationType)
- If CompletedOperationType = -1 Then
- CompletedOperationType = operationType
- Else
- If CompletedOperationType = operationType Then
- CompletedOperationType = -1
- Interlocked.Exchange(CompletedOperations, 0)
- Debug.WriteLine("InClassIf: " & operationType)
- RaiseEvent MeldungsID(0, operationType)
- Else
- CompletedOperationType = -1
- Interlocked.Exchange(CompletedOperations, 0)
- Debug.WriteLine("InClassElse: " & operationType)
- RaiseEvent MeldungsID(0, operationType)
- End If
- End If
- End Sub
Auszug aus dem Form:
VB.NET-Quellcode
-
- Private Sub Mitteilungen(ByVal var As Integer, typ As Integer) Handles copyzip.MeldungsID
- Debug.WriteLine("MeldungsID: " & var & Environment.NewLine & "CompletedOperationType: " & typ)
- If var = 0 AndAlso typ = 1 Or var = 1 AndAlso typ = 0 Then
- Debug.WriteLine("Bedingung 1 erfüllt")
- ResetControls()
- RestProgrssbar()
- logger.AddLogEntry(EventExceptionRecorder.LogLevel.Success, "Single-Task abgeschlossen.")
- 'Der Zweig funktioniert wenn Copy&Zip gleichzeitig laufen
- ElseIf var = 0 AndAlso typ = 0 Then
- Debug.WriteLine("Bedingung 2 erfüllt")
- ResetControls()
- RestProgrssbar()
- logger.AddLogEntry(EventExceptionRecorder.LogLevel.Success, "Copy und Zip-Task abgeschlossen.")
- End If
- End Sub
Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen.