110,571
社区成员
发帖
与我相关
我的任务
分享
public partial class Form1 : Form
{
string search;
delegate void setList();
setList set = null;
public Form1()
{
InitializeComponent();
}
private void Search()
{
set = delegate()
{
listView1.Clear();
search = textBox1.Text;
//searchFile(@"C:\WINDOWS\system32");
DirectoryInfo di = new DirectoryInfo(@"C:\WINDOWS\system32");
FileInfo[] f = di.GetFiles(search);
foreach (FileInfo fi in f)
listView1.Items.Add(fi.Name);
};
listView1.Invoke(set);
}
private void button2_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(Search));
t.Start();
}
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(Search));
t.IsBackground = true;
t.Start();
}
string search;
delegate void setList(FileInfo fi);
setList set = null;
public Form1()
{
InitializeComponent();
}
private void Search()
{
listView1.Clear();
search = @"*.*";
//searchFile(@"C:\WINDOWS\system32");
DirectoryInfo di = new DirectoryInfo(@"C:\WINDOWS\system32");
FileInfo[] f = di.GetFiles(search);
set = delegate(FileInfo fi)
{
listView1.Items.Add(fi.Name);
};
foreach (FileInfo fi in f)
{
listView1.Invoke(set, new object[] { fi});
Thread.Sleep(10);
}
}
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(Search));
t.Start();
}
}
string textName;
public Form1()
{
InitializeComponent();
}
private delegate void SetList();
private void Search()
{
textName = textBox1.Text;
if (listView1.InvokeRequired)
{
SetList set = new SetList(Search);
this.listView1.Invoke(set);
}
else
{
DirectoryInfo di = new DirectoryInfo(@"C:\WINDOWS\system32");
FileInfo[] fi = di.GetFiles(textName);
foreach (FileInfo f in fi)
listView1.Items.Add(f.Name);
}
}
private void button2_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(Search));
t.Start();
}
新写的也是没有效果,这线程明显不给力啊 private void Search()
{
listView1.Clear();
search = textBox1.Text;
//searchFile(@"C:\WINDOWS\system32");
DirectoryInfo di = new DirectoryInfo(@"C:\WINDOWS\system32");
FileInfo[] f = di.GetFiles(search);
foreach (FileInfo fi in f)
listView1.Invoke(new Action<string>(x => listView1.Items.Add(x)), fi.Name);
}
线程不能直接操作主界面啊 这个时候就用委托
public delegate void RemoveItem(ListViewItem item);
void RemoveListItem(ListViewItem item)
{
listView_tid.Items.Remove(item);
}
RemoveItem remove = new RemoveItem(RemoveListItem);
this.Invoke(remove, new object[] { item });