اینم روش من
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(add);
t.Start();
}
int counter = 0, counter2 = 0, integer = 0, tmp = 0;
void add()
{
tmp = DateTime.Now.Second;
d d0 = new d(add2);
System.Collections.ArrayList al = new System.Collections.ArrayList();
al.Add(@"C:\windows\system32\");
step1:
if (al.Count != 0)
{
foreach (string s in System.IO.Directory.GetDirectories(al[0].ToString()))
{
this.Invoke(d0, (object)s);
counter2++;
al.Add(s);
}
foreach (string s in System.IO.Directory.GetFiles(al[0].ToString()))
{
this.Invoke(d0, (object)s);
counter++;
}
}
else
goto step2;
al.RemoveAt(0);
goto step1;
step2:
MessageBox.Show(counter + " items founded , " + counter2 + " folders founded");
}
public delegate void d(string s);
int i = 1;
void add2(string s)
{
listBox1.Items.Add(s);
button1.Text = i.ToString();
i++;
if (Math.Abs(DateTime.Now.Second - tmp) >= 1)
{
label1.Text = (i - integer) + "f/s";
tmp = DateTime.Now.Second;
integer = i;
}
}