首页 新闻 会员 周边

线程问题求教

0
悬赏园豆:5 [已关闭问题]
一、环境(winform C#):<br><br>二、winform中有一个datagridview,显示数据为某文件夹下的多个xml文件列表,如<br><br><font color="#999999">文件名,&nbsp;&nbsp;&nbsp; 姓名节点,&nbsp;&nbsp; 性别节点<br>-----------------------------<br>001.xml&nbsp;&nbsp; 张三&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 男<br>002.xml&nbsp;&nbsp; 李四&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 女<br>003.xml&nbsp;&nbsp; 王二&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 男</font><br><br>1)通过双击datagridview,可以通过<font color="#ff0000">外部程序(如记事本)</font>打开文件(如001.xml)<br>2)如果修改001.xml的性别节点为"女",并关闭这个记事本文件后,datagrdiview将<font color="#ff0000">更新绑定</font>,如<br><font color="#999999"><br>文件名,&nbsp;&nbsp;&nbsp; 姓名节点,&nbsp;&nbsp; 性别节点<br> -----------------------------<br> 001.xml&nbsp;&nbsp; 张三&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 女</font><br><br>三、问题:<br>1.我目前是通过process.start("目录:\001.xml")打开记事本并编辑文件的,但是无法判断文件是否关闭,即使通过process.Hasexited,也不知通过什么来捕捉它?难道需要有计时器控件来捕捉,如果是这样,岂不是太影响效率.<br>2.想想,是不是应该用线程来控制?有什么好的思路,请多多指教啊.<br><br><br>
apan的主页 apan | 初学一级 | 园豆:190
提问于:2008-08-27 08:27
< >
分享
其他回答(2)
0
System.IO.FileSytemWatcher可以监视某个目录下的文件的变化。你可以在它的通知中更新你的界面。 细节你可以参考MSDN中的例子: http://msdn.microsoft.com/zh-cn/library/system.io.filesystemwatcher.aspx
Colin Han | 园豆:3041 (老鸟四级) | 2008-08-27 13:41
0
下面这个问题和你这个问题是类似的,你看看用他那个办法行不行 http://space.cnblogs.com/question/2609/
eaglet | 园豆:17139 (专家六级) | 2008-08-28 12:54
0

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

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

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

陛下 | 园豆:3938 (老鸟四级) | 2008-09-07 03:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册