首页 新闻 搜索 专区 学院

请大神给我解释!我就是不懂该怎么改。

0
悬赏园豆:5 [已解决问题] 解决于 2015-08-13 10:32

private void CheckProcess(object source, System.Timers.ElapsedEventArgs e)
{
  //……
  FileStream fs = new FileStream(filePath.Text, FileMode.Open);
  StreamReader sr = new StreamReader(fs);
  string line;
  while ((line = sr.ReadLine()) != null)
  {
        //......
  }

  //sr.Close();
  //fs.Close();

}

 

The process cannot access the file 'C:\Users\tylan\Desktop\ConfigurationFile.txt' because it is being used by another process. 

 

上面这个方法我每隔10s种会触发一次,结果是文件can not access,因为被占用着。我觉得肯定是我的输入流这没弄明白,我用using也不好使,close流也不好使。不知道大神能否给出解释呢?应该怎么改?

C#
问题补充:

我还有另外一个方法,其中也涉及了文件流,不过这个方法只执行了一遍。难道有冲突?

天外归云的主页 天外归云 | 初学一级 | 园豆:168
提问于:2015-08-13 08:47
< >
分享
最佳答案
2

1、如果不是有线程修改这个文件,你每10S打开一次好玩吗?

2、一般是没有必要这样编程的,你知道有个东西叫FileSystemWatcher吗?

不知道可以看看这篇文章(其实可以让你自己Google的)

谈谈C#文件监控对象FileSystemWatcher使用感受

收获园豆:3
爱编程的大叔 | 高人七级 |园豆:30753 | 2015-08-13 10:25

诶嘿!O(∩_∩)O谢谢您的高级意见!

天外归云 | 园豆:168 (初学一级) | 2015-08-13 10:26
其他回答(6)
0

The process cannot access the file 'C:\Users\tylan\Desktop\ConfigurationFile.txt' because it is being used by another process. 

进程无法访问文件"C:\Users\tylan\Desktop\ConfigurationFile.txt",因为它是被另一个进程。

可能是你手动打开了这个文件,或者其他进程调用了,还有检查下是不是这个方法,采用多线程同时调用.

明Lam | 园豆:595 (小虾三级) | 2015-08-13 09:01

您好!没有手动打开,也没有多进程调用这个文件。

支持(0) 反对(0) 天外归云 | 园豆:168 (初学一级) | 2015-08-13 09:03
0

换个角度想想,为什么要10秒钟触发一次这个呢?

几年前好像我也这么做过,后来修改为只读一次了,好像当时我还在博客里写过一篇文章,hanxianlong.cnblogs.com

收获园豆:1
是谁啊? | 园豆:339 (菜鸟二级) | 2015-08-13 09:38

好思路,不过没办法。

支持(0) 反对(0) 天外归云 | 园豆:168 (初学一级) | 2015-08-13 10:06
0

 文件操作Open后要记得Close,否则会出问题的!

hippieZhou | 园豆:578 (小虾三级) | 2015-08-13 09:41

Close啦~还是有问题。

支持(0) 反对(0) 天外归云 | 园豆:168 (初学一级) | 2015-08-13 10:05

@天外归云: 你的流确实是关了,但是文件操作没有Close呀,你每10秒操作文件一次,在这期间文件要关闭,在下个10秒在重新打开!

支持(0) 反对(0) hippieZhou | 园豆:578 (小虾三级) | 2015-08-13 10:54

@hippieZhou: 怎么关闭呢?我这边看应该是关闭了呀。流关闭了以后还需要怎么做?

支持(0) 反对(0) 天外归云 | 园豆:168 (初学一级) | 2015-08-13 11:25
0

应该是被自己占用了.打开之后在程序内加个同步对象,锁一下文件操作代码.

吴瑞祥 | 园豆:28856 (高人七级) | 2015-08-13 09:52

不懂呢……哈哈,应该怎么写呢?

支持(0) 反对(0) 天外归云 | 园豆:168 (初学一级) | 2015-08-13 10:06
1

应该是10秒一次执行的时候上一次程序文件还是被打开的,应该去加一个锁,必须等上一次操作完成,才能够允许执行,我们写的windows服务不是就实现了这个吗,可以参考

收获园豆:1
稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-13 10:04

好想法!我想想该怎么做。

支持(0) 反对(0) 天外归云 | 园豆:168 (初学一级) | 2015-08-13 10:07

可是怎么检查是否被锁了呢?

支持(0) 反对(0) 天外归云 | 园豆:168 (初学一级) | 2015-08-13 10:14
0

会不会是10s触发后还没关闭又触发了

wuyubing | 园豆:204 (菜鸟二级) | 2015-08-13 10:07

恩呢,我觉得应该是这种情况。

支持(0) 反对(0) 天外归云 | 园豆:168 (初学一级) | 2015-08-13 10:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册