当前位置:编程学习 > C#/ASP.NET >>

怎么读取正在使用的文件

我的程序调用一个DLL,  这个DLL调用的时候会计算很长时间,计算的过程中会产生一个data.DAT文件, 并且不停的往里面写数据,  现在有个问题,就是让DLL产生data.DAT文件之后,我程序另一个地方再去读取它,并且去读取data.DAT里面的数据行数。 请问如何去实现。  最好有详细代码。谢谢
PS:data.DAT文件是一直被DLL程序占用的。 --------------------编程问答-------------------- 自己去写程序吧。。。

dll打开文件时以写独占方式打开。。另外的程序以只读打开去读取。 --------------------编程问答--------------------
引用 1 楼 wwlyqin 的回复:
自己去写程序吧。。。

dll打开文件时以写独占方式打开。。另外的程序以只读打开去读取。


我的意思是是DLL计算的时候程序怎么去执行我的那个 获取data.DAT文件行数的 方法。 程序执行DLL的时候不是要等DLL执行完程序才跳出来么? 现在是这个问题, 要怎么去读取文件行数我会 --------------------编程问答-------------------- copy出来 --------------------编程问答-------------------- 有难度 --------------------编程问答-------------------- 我能像到的是,DLL在写文件时,是计算一段时间写一次,写完后立刻关闭流,下次写的时候再打开。
另一个程序则在DLL关闭流后开始读取一直到读取完或DLL又要写数据。

可能DLL与另一个程序需要互相进行通信已保证交替进行操作 --------------------编程问答--------------------
引用 2 楼 yuyu46569 的回复:
引用 1 楼 wwlyqin 的回复:
自己去写程序吧。。。

dll打开文件时以写独占方式打开。。另外的程序以只读打开去读取。


我的意思是是DLL计算的时候程序怎么去执行我的那个 获取data.DAT文件行数的 方法。 程序执行DLL的时候不是要等DLL执行完程序才跳出来么? 现在是这个问题, 要怎么去读取文件行数我会

在线程中执行DLL --------------------编程问答--------------------
引用 6 楼 bunliney 的回复:
引用 2 楼 yuyu46569 的回复:

引用 1 楼 wwlyqin 的回复:
自己去写程序吧。。。

dll打开文件时以写独占方式打开。。另外的程序以只读打开去读取。


我的意思是是DLL计算的时候程序怎么去执行我的那个 获取data.DAT文件行数的 方法。 程序执行DLL的时候不是要等DLL执行完程序才跳出来么? 现在是这个问题, 要怎么去读取文件行数我会

在线……


比如我获取文件行数的方法 叫 tim()
我DLL和tim()方法 都是用的线程, 只是两个都用线程的话,在刚开始执行tim()时DLL还没有产生data.DAT文件,那我tim()方法里面会报找不到data.DAT文件的错。 --------------------编程问答-------------------- 读的时候带读阻塞?不知道FileStream按行读的时候会不会阻塞。
如果不行,那就在线程里读一次,读不到就sleep,然后继续读。

写应该是一直打开的吧?

可以写代码试验一下。 --------------------编程问答-------------------- 直接按行读,或者一个字符一个字符的读。因为文件没写完,获取行数不准确的 --------------------编程问答--------------------
引用 7 楼 yuyu46569 的回复:
引用 6 楼 bunliney 的回复:
引用 2 楼 yuyu46569 的回复:

引用 1 楼 wwlyqin 的回复:
自己去写程序吧。。。

dll打开文件时以写独占方式打开。。另外的程序以只读打开去读取。


我的意思是是DLL计算的时候程序怎么去执行我的那个 获取data.DAT文件行数的 方法。 程序执行DLL的时候不是要等DLL执行完程序才跳出来么? 现在是这……


让DLL向tim通信,每次关闭流时通知tim,然后tim接收到通知后开始读取,在下一次dll写入时再次通知tim并等待tim反馈操作结束,然后开始再次写入。 --------------------编程问答-------------------- 用读写锁控制dll写文件的时候模式选择 FileShare.ReadWrite,这样当dll不写文件的时候可以允许其他程序读取
另外用内存映射倒是也可以,不过不能保证读文件的时候,写操作是不是正在修改文件
--------------------编程问答-------------------- 读取进程不就对了么LZ
--------------------编程问答--------------------
引用 10 楼 bunliney 的回复:
引用 7 楼 yuyu46569 的回复:

引用 6 楼 bunliney 的回复:
引用 2 楼 yuyu46569 的回复:

引用 1 楼 wwlyqin 的回复:
自己去写程序吧。。。

dll打开文件时以写独占方式打开。。另外的程序以只读打开去读取。


我的意思是是DLL计算的时候程序怎么去执行我的那个 获取data.DAT文件行数的 方法。 程序执行DLL的时……


你这个方法可以行的通。
不过详细的能给点代码么,谢谢了 --------------------编程问答-------------------- 既然只有读的权限 ,就把文件copy出来一份至于命名规则由你自己定,当他读完时 再把文件删除掉
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,