昨天星期天 我休息 没上班 所以没碰到什么问题
今天接着做我星期六的问题:winform上传图片后删除时报错!这里的上传图片是只把名字写到数据库里而图片都在指定的文件夹里,这里删除的时候
一是删除数据库里的图片名称记录,二是删除指定文件夹中的图片
删除指定文件夹中图片的时候一般都会想到File.Delete(Path);
但是很多时候这里都会报错:此进程正在由另一个使用……反正是删除不了这长图片
我在这问题上困惑了很长久,也在网上找了很多资料!很多都是说需要释放也就是说Dispose();
同样我也释放了
但是还是有问题
我仔细看了一下报错的信息,然后找到如何关闭进程
上传图片,并且保存名称到数据库中的详细步骤可以参考 winform 中往数据库中添加图片的两种方式之一
这里面有详细的做法
这篇博文主要是说一下如何关闭这些进程
首先在说一下那个如何遍历界面中的所有控件,并且根据其id选出来
就拿pictureBox来举个例子吧
Button btn = sender as Button;
string nameid = btn.Name; //这句和上一句是传值 详细点的信息可以看一下winform 中往数据库中添加图片的两种方式之一
PictureBox p = null; //定义一个p pictureBox类型的
foreach (Control c in this.Controls) //这个就是遍历界面中所有的控件了
{
if ((p = (c as PictureBox)) != null)
{
if (p.Name == picid) //这里的picid也是从上面传过来的 具体方法跟button传值相同
{
p.Image = null; //这里就是执行的操作
}
}
}
好了 说正题
string processname = "";
Process[] allProcess = Process.GetProcesses();
foreach (Process p in allProcess)
{
if (p.ProcessName.ToLower() + ".exe" == processname.ToLower())
{
for (int i = 0; i < p.Threads.Count; i++)
p.Threads[i].Dispose();
p.Kill();
break;
}
}
这段代码就是关闭进程
这里面写的有什么错误或者不明白的地方可以直接留言也可以加QQ81704239
希望大虾们多给我提提意见
这里面还有缺陷!还有一种可能没说!明天继续