C# winform删除某目录下的文件 并在界面上实时显示删除的个数

比如:A目录下有100个文件(文件夹不是),点击删除按钮后程序删除了一个就在界面上显示一个好像要用线程什么的,求代码!... 比如:A目录下有100个文件(文件夹不是),点击删除按钮后 程序删除了一个就在界面上显示一个
好像要用线程什么的,求代码!
展开
 我来答
百度网友3831f2b
2013-12-18 · TA获得超过162个赞
知道小有建树答主
回答量:143
采纳率:100%
帮助的人:94.2万
展开全部
推荐使用APM模式,就是形如 BeginDelete/EndDelete方式的调用。
在BeginDelete方法中,将你的删除文件函数放进来,这个函数可以返回删除的是第几个文件,然后在EndDelete中获取删除的文件的索引,放到界面显示即可。 你可能还需要用AutoResetEvent做下同步,如果有必要的话。
更多追问追答
追问
偶是小白一枚,只求代码一堆。
追答
说错了,还是EAP模式好用点。 你看看BackGroundWorker组件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syyongyousoft
2013-12-19 · TA获得超过529个赞
知道小有建树答主
回答量:85
采纳率:100%
帮助的人:76.4万
展开全部
private void button1_Click(object sender, EventArgs e) { Thread th = new Thread(new ThreadStart(Run)); th.Start(); } private void Run() { string[] files = Directory.GetFiles("盘符:\\A"); for (int i =0 ; i < files.Length; i++) { File.Delete(files[i]); this.BeginInvoke(new MethodInvoker(() => { textBox1.Text = string.Format("已删除:{0}/{1}", i + 1, files.Length); })); Thread.Sleep(500); } }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ghotos
2013-12-18 · TA获得超过280个赞
知道小有建树答主
回答量:435
采纳率:0%
帮助的人:363万
展开全部
不用多线程的可以么?一样可以实现,就是效果锉一点。删大文件的时候界面会假死。可以的话就直接上代码了,不用开VS了。。。
追问
我看看可以不?
追答
//多线程
private void button1_Click(object sender, EventArgs e)
{
      Thread th = new Thread(new ThreadStart(Run));      
      th.Start();
}
private void Run()        
{
     string[] files = Directory.GetFiles("C:\\test");
     for (int i =0 ; i < files.Length; i++)            
     {
           File.Delete(files[i]);
           this.BeginInvoke(new MethodInvoker(() => 
           {                    
                 textBox1.Text = string.Format("已删除:{0}/{1}", i + 1, files.Length);                
            }));
      }        
}

//单线程版

private void button1_Click(object sender, EventArgs e)
{
    string[] files = Directory.GetFiles("C:\\test");
     for (int i =0 ; i < files.Length; i++)            
     {
           File.Delete(files[i]);                           
           textBox1.Text = string.Format("已删除:{0}/{1}", i + 1, files.Length);
           Application.DoEvents();//就这句
      }        
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangpaishi
2013-12-18 · TA获得超过570个赞
知道小有建树答主
回答量:932
采纳率:52%
帮助的人:760万
展开全部
string[] files = Directory.GetFiles("d:\\ddd");
int count = files.Length;
for(int i=0;i<count;i++)
{
File.Delete(files[i]);
this.label1.Text = string.Format("已删除:{0};总共:{1}", i+1, count);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式