[已解决问题] 线程问题求教
提问时间: 2008-08-27 08:27
悬赏分:5 浏览:238 次
一、环境(winform C#):

二、winform中有一个datagridview,显示数据为某文件夹下的多个xml文件列表,如

文件名,    姓名节点,   性别节点
-----------------------------
001.xml   张三        男
002.xml   李四        女
003.xml   王二        男


1)通过双击datagridview,可以通过外部程序(如记事本)打开文件(如001.xml)
2)如果修改001.xml的性别节点为"女",并关闭这个记事本文件后,datagrdiview将更新绑定,如

文件名,    姓名节点,   性别节点
-----------------------------
001.xml   张三        女


三、问题:
1.我目前是通过process.start("目录:\001.xml")打开记事本并编辑文件的,但是无法判断文件是否关闭,即使通过process.Hasexited,也不知通过什么来捕捉它?难道需要有计时器控件来捕捉,如果是这样,岂不是太影响效率.
2.想想,是不是应该用线程来控制?有什么好的思路,请多多指教啊.


提问者:apan - 初学一级
所有回答(3)
System.IO.FileSytemWatcher可以监视某个目录下的文件的变化。你可以在它的通知中更新你的界面。 细节你可以参考MSDN中的例子: http://msdn.microsoft.com/zh-cn/library/system.io.filesystemwatcher.aspx
3个月前   回答者:Colin Han - 老鸟四级
下面这个问题和你这个问题是类似的,你看看用他那个办法行不行 http://space.cnblogs.com/question/2609/
3个月前   回答者:eaglet - 老鸟四级

System.IO.FileSytemWatcher 似乎只能监视改动、创建、删除,对于只读再关闭的检测估计是个问题。我有个好的思路,可以绕过这个问题,或者换个角度想问题:兄弟何不试试”通过外部程序(如记事本)打开文件(如001.xml)“的副本?

每次打开前,你将当前文件(如 001.xml)复制到(如 copy_001.xml),然后打开该复制后的文件。如果复制到的文件被占用,就提示用户文件已经打开。至于你对源文件的操作,爱咋弄咋弄,根本不用关注你的查看情况。

不过,如果被其他系统占用(比如你人为占用源文件),更改时设置超时,然后告知更改失败,让用户检查是否被占用等等。


2个月前   回答者:陛下 - 老鸟四级
评论
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题



> 问题排行榜

相关内容

相关链接