Re: Linq für Suche in Liste nutzen



Hallo zusammen,

@ Armin:
Danke für den Hinweis. Ich werde das etwas später in einem anderen Projekt ausprobieren, wo diese "standard-Vorgehensweise" wirklich ausreichen dürfte.

@ Andreas Schmidt:
Daß das gewisse Ähnlichkeit mit einer Auto-Complete Funktion hat ist mir auch schon aufgefallen, aber das soll es in diesem Fall nicht werden.

@ Peter:
Schönes Beispiel, ich werde nachher meine Problemstellung mal mit deinem Ansatz ausprobieren :-) Danke für deine Mühe.

Ich hab in der Zwischenzeit (also bevor ich eure Anmerkungen hier gelesen habe) etwas probiert, was an sich einigermaßen zufriedenstellend läuft. Lediglich bekomme ich ab und an, aber sehr unregelmässig Fehler wegen threadübergreifender Vorgänge, und das obwohl ich versucht habe das abzusichern. Daher noch ein zwei Frage zu dem was ich da getrieben haben:

Private Delegate Sub myDelegate()

Private Sub ToolStripTextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripTextBox1.TextChanged
If Not myThread Is Nothing Then myThread.Abort() 'Ich weiß, die Brechstange, aber mit den anderen Ansätzen hatte ich Probleme bei der Umsetzung
myThread = New Threading.Thread(AddressOf Search)
myThread.Start()
End Sub

Private Sub Search()
If Me.InvokeRequired Then
Dim d As New myDelegate(AddressOf Search)
Me.Invoke(d)
Else
ListView3.Items.Clear()
ImageList3.Images.Clear()
TabControl1.TabPages(2).Text = "Suche läuft..."
Application.DoEvents()

Dim Daten = From x In ...

For Each RS In Daten
Call AddToListView(RS.FullPath)
Next

TabControl1.TabPages(2).Text = "Suchergebnisse (" & ListView3.Items.Count & ")"
End If
End Sub

Das ganze läuft auf Form1, Me verweist also auf dieses Formular.

1) Reicht es hier nicht aus auf Me.InvokeRequired zu überprüfen? Wie ihr seht spreche ich in der Funktion eine ganze Reihe unterschiedlicher Steuerelemente an, sollte ich da um sicher zu gehen jeden einzelnen Aufruf über einen Delegaten ausführen? (Das sieht dann ja furchbar unübersichtlich aus)

2) Das ganze läuft an sich recht gut, lediglich das hinzufügen der Bilder ins ListView scheint den Zugriff aufs Formular zu behindern / verlangsamen. Habe es schon mit einem ListView3.SuspendLayout / ResumeLayout versucht, aber das scheint gar nichts zu bringen. Kann ich da sonst noch etwas tun?

Werde mir jetzt den Code von dir, Peter nochmal genau anschauen, ob ich den nicht auf mich adaptieren kann.

Viele Grüße,

Petra

.



Relevant Pages

  • Re: Linq für Suche in Liste nutzen
    ... Lediglich bekomme ich ab und an, ... Private Delegate Sub myDelegate() ... Private Sub ToolStripTextBox1_TextChanged _ ...
    (microsoft.public.de.german.entwickler.dotnet.vb)
  • Re: Threading
    ... The problem is that the m_oCallbackDelegate delegate is executed on the ... execution of m_oCallbackDelegate onto the UI thread. ... Private Class SideStep ... Friend Sub New ...
    (microsoft.public.dotnet.languages.vb)
  • Re: ComPort-Problem
    ... Private WithEvents mobjComPort1 As System.IO.Ports.SerialPort ... Public Sub New() ... End With ... Private Delegate Sub objDelegateBufferLesen() ...
    (microsoft.public.de.german.entwickler.dotnet.vb)
  • Re: Fortschrittsbalken für Funktion
    ... Private pb As New ProgressBar ... Private endflag As Boolean ... Delegate Sub ShowProgress() ... ' Create a delegate that points to it. ...
    (microsoft.public.de.german.entwickler.dotnet.vb)
  • Re: Fortschrittsbalken für Funktion
    ... Private pb As New ProgressBar ... Private endflag As Boolean ... Delegate Sub ShowProgress() ... ' Create a delegate that points to it. ...
    (microsoft.public.de.german.entwickler.dotnet.vb)