目前在开发一个项目内容
1.有一台设备 照相功能
2.生成图片放入 电脑 如:D:\test中使用fileSystemWatcher监听 当图片CREATE 的时候 拿取图片到数据库
程序出现一个问题设备软件占用图片。而我的监听系统也要获得图片
就会报 错误 D:\TEST\**.Jpeg 文件被另一个通道占用。这种事情应如何出来???
请各位指教!!
1.有一台设备 照相功能
2.生成图片放入 电脑 如:D:\test中使用fileSystemWatcher监听 当图片CREATE 的时候 拿取图片到数据库
程序出现一个问题设备软件占用图片。而我的监听系统也要获得图片
就会报 错误 D:\TEST\**.Jpeg 文件被另一个通道占用。这种事情应如何出来???
请各位指教!!
这个地方程序运行后 第一次创建时 能正常 获取 第二次就报这个错误了。。我断点调试 的时候。一点问题都没有。
private static void BeforeDoWork(string path)
{
FileInfo fi = new FileInfo(path);
string msg = string.Empty;
//判断文件是否存在(因为可能是文件夹或者别的什么异常)
if (!fi.Exists)
{
msg += path + " 文件不存在或者不是文件"+DateTime.Now;
lock (_locker)
{
writeInLog(msg);
}
SendMessage(msg);
return;
}
//这里采用IO冲突的方式去判断是否写入完毕
Again: try
{
fi.OpenRead();
}
catch (IOException ex)
{
Thread.Sleep(500);
goto Again;
}
}你如果监控文件量大的话,建议使用多线程,或者利用c#里的线程池,及时响应,不然filesystemwatch的缓存满了就溢出了。你的监控文件也就丢失部分
问下 有没有 filesystemwatch 多线程的案例 谢谢