Guten Abend,
stehe gerade vor dem Problem das ich einen Zeitintensiven Suchvorgang >5sec in einen Thread auslagern will, nebenbei soll ein Busyindicator aus dem WPF Toolkit zum Einsatz kommen:
Here we go:
XAML der gebundenen Form:
Die IsBusy Eigenschaft des Inidcators triggered seinen Sichtbarkeit diese ist gebunden an mein Objekt mit der Boolean Property is_busy => funktioniert einwandfrei.
Leider blockiert mir meine Suche weiterhin den GUI Thread so das der Indicator nicht angezeigt wird:
Improvisierte Sub für den Thread:
Der Code läuft eigentlich durch lt. meinen Debug Print wird auch die is_busy Property geändert aber leider wird der BusyIndicator nicht angezeigt.
Ziel der gesamten Geschicht ist es:
User ruft Suchform auf, definiert die Suche führt Suche aus, BusyIndicator wird eingeblendet, Suche läuft im Hintergrund, Wenn Suche erledigt dann BusyIndicator ausblenden.
Hat jemand einen Tipp für mich?
Danke
stehe gerade vor dem Problem das ich einen Zeitintensiven Suchvorgang >5sec in einen Thread auslagern will, nebenbei soll ein Busyindicator aus dem WPF Toolkit zum Einsatz kommen:
Here we go:
XAML der gebundenen Form:
Die IsBusy Eigenschaft des Inidcators triggered seinen Sichtbarkeit diese ist gebunden an mein Objekt mit der Boolean Property is_busy => funktioniert einwandfrei.
Leider blockiert mir meine Suche weiterhin den GUI Thread so das der Indicator nicht angezeigt wird:
VB.NET-Quellcode
- Private Sub SearchExecute(v_search As searchdefinition_v01)
- v_search.is_busy = True
- v_search.SearchResults = New ListCollectionView(__transactions)
- If v_search.SearchResults.CanFilter Then
- Dim thr As New Thread(Sub(p) SearchExecuteforThread(v_search))
- With thr
- .Priority = ThreadPriority.Normal
- .SetApartmentState(ApartmentState.STA)
- .Start()
- End With
- If thr.ThreadState = ThreadState.Stopped Then
- v_search.is_busy = False
- End If
- Else
- v_search.SearchResults = Nothing
- End If
- End Sub
Improvisierte Sub für den Thread:
VB.NET-Quellcode
- Private Sub SearchExecuteforThread(v_search As searchdefinition_v01)
- Dim fil_search As New cls_search_filters(v_search)
- Application.Current.Dispatcher.Invoke(New Action(Sub()
- v_search.SearchResults.Filter = New Predicate(Of Object)(AddressOf fil_search.SearchExecuteFilter)
- v_search.SearchResults.SortDescriptions.Add(New SortDescription With {.PropertyName = "datum", .Direction = ListSortDirection.Ascending})
- End Sub))
- End Sub
Der Code läuft eigentlich durch lt. meinen Debug Print wird auch die is_busy Property geändert aber leider wird der BusyIndicator nicht angezeigt.
Ziel der gesamten Geschicht ist es:
User ruft Suchform auf, definiert die Suche führt Suche aus, BusyIndicator wird eingeblendet, Suche läuft im Hintergrund, Wenn Suche erledigt dann BusyIndicator ausblenden.
Hat jemand einen Tipp für mich?
Danke
mfG.
Stephan
Stephan
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kaifreeman“ ()