C# Hilfe bei Desktopsuche

axelfxxx

Mitglied
Hi Leute;

ich habe folgende Funktion: desktopsuche Bei dieser Funktion möchte ich dem User anzeigen lassern, welches Verzeichnis gerade durchsucht wird. Wie kann ich das machen ? Soweit funktioniert diese Funktion ja, aber es fehlt halt noch die Resonanz dazu.

Code:
public void DesktopSuche(string suchoption)
        {
            
            try
            {
                this.Cursor = Cursors.WaitCursor;
                string path = search_ort.Text;
                this.ergebnisse.View = View.Details;
                
                System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(path);

                if ((dir.Parent.Attributes == FileAttributes.Hidden) || dir.Parent.Attributes == FileAttributes.System)
                {
                    return;
                }


                DirectoryInfo[] dirs = dir.GetDirectories();
                FileInfo[] files = dir.GetFiles(suchoption, SearchOption.AllDirectories);
                            

                //Aufbau der Listview
                ListViewItem lvi;
                ListViewItem.ListViewSubItem lvsi;
                this.ergebnisse.BeginUpdate(); // Für ein Update schließen         

                foreach (System.IO.FileInfo fi in files)
                {
                    this.info_panel.Text = fi.FullName;

                    lvi = new ListViewItem(); // Main Listview
                    lvi.Text = fi.Name;
                    lvi.ImageIndex = 2;
                    lvi.Tag = fi.FullName;
                    lvi.ToolTipText = fi.FullName;

                    lvsi = new ListViewItem.ListViewSubItem(); // Listview Subitem
                    lvsi.Text = fi.Directory.Name;
                    lvi.SubItems.Add(lvsi);

                    lvsi = new ListViewItem.ListViewSubItem(); // Listview Subitem
                    lvsi.Text = fi.Length.ToString() + "Bytes";
                    lvi.SubItems.Add(lvsi);

                    lvsi = new ListViewItem.ListViewSubItem(); // Listview Subitem
                    lvsi.Text = fi.Extension.ToString();
                    lvi.SubItems.Add(lvsi);

                    lvsi = new ListViewItem.ListViewSubItem();
                    lvsi.Text = fi.LastWriteTime.ToLocalTime().ToString(); // ListViewSubitem
                    lvi.SubItems.Add(lvsi);

                    this.ergebnisse.Items.Add(lvi);


                }
                this.Cursor = Cursors.Default;
                int treffer = files.Length;
                search_result.Text += Environment.NewLine + "Suche nach: " + suchoption + " : " + treffer + " Treffer.";
                this.ergebnisse.EndUpdate(); // Update Beendet,wieder öffnen
                



            }
            catch (System.Exception err)
            {
                MessageBox.Show("Ein Fehler bei der Desktopsuche ist aufgetreten: "
                    + System.Environment.NewLine + err.Message, "Fehler...", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                
            }
            
        }
 
Wenn ich davon ausgehen kann, dass deine Methode innerhalb eines Thread läuft, dann könntest du das evtl. so lösen (Keine Garantie das das funktioniert, ich hab's nicht getestet...)

Code:
void UpdateFolder(string folderName)
{
   if (this.InvokeRequired) 
   {  // Prüfen, ob du im richtigen Thread bist, wenn nicht, per Invoke wechseln
      this.Invoke (new MethodInvoker (UpdateFolder, new object[] { folderName }));
      return;
   }
   //Richtiger Thread, 
   this._labelXYZ.Text = folderName;
}


Sollte das nicht funktionieren, einfach mal nach InvokeRequired und Threads suchen
 
Zurück