如果win7关机后重新开启。有概率win10*问到的共享文件还是重启之前的(直接打开共享文件查看的,)。必须要重启win10才能访问到最新的共享文件。
之前是win7访问win7也不行,win7是连断开连接都是没反应!
请问共享文件是不是有缓存,如果有怎么刷新?百度上没刷到!
void Read_today_data(string location)//全部读取
{
string datetime1 = System.DateTime.Now.ToString("yyyyMMdd");
{
FileStream fs = new FileStream(location, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader sr = new StreamReader(fs);
while (sr.Peek() >= 0)
{
string nextLine = sr.ReadLine();
if (nextLine.Contains(datetime1))
{
if (nextLine.Contains("OK"))
{
if (nextLine.Contains(checksum0))
{
string number1 = nextLine.Split(' ')[1];
if (number1.Length >= 8)
{
list1.Add(number1);
}
}
}
}
}
fs.Flush();
fs.Close();
sr.Close();
}
}
7 个解决方案
#1
注意,一个文件不能同时被多个进程操作。。。一个进程在读写的时候,另一个并不能操作,
所以你以文件作为标识,有的时候回发生锁定,建议换个方法,用管道或者socket 通信,比较安全。。。
所以你以文件作为标识,有的时候回发生锁定,建议换个方法,用管道或者socket 通信,比较安全。。。
#2
多进程通过文件进行交互,需要处理好同步
之前用过两种方案
1。每次有新的数据,就生成新的文件,文件名称和生成时间绑定。
lz说的情况,其实就是A每秒生成一个数据文件;B读取文件后将文件删除。
2。如果文件是固定名称。那么写入时,最好先写到一个临时文件,数据保存完成后,
再将临时文件覆盖文件。
之前用过两种方案
1。每次有新的数据,就生成新的文件,文件名称和生成时间绑定。
lz说的情况,其实就是A每秒生成一个数据文件;B读取文件后将文件删除。
2。如果文件是固定名称。那么写入时,最好先写到一个临时文件,数据保存完成后,
再将临时文件覆盖文件。
#3
感觉不是有缓存,就是有什么锁,重启就触发了。
那个日志文件是之前的测试设备生成的,没办法改他的软件。现在有很低概率触发这个异常,就是不知道怎么搞得完美点。
#4
那个win7上的测试软件改不了了。在win10那台机器上,我是直接用我的电脑打开那个共享文件夹的,里面不是最新的。所以代码也是,访问不到最新。
#5
写的很好,很有意思,值得一看
#6
停止读取后。重置共享凭据。用命令行。
ping 127.0.0.1 -n 6 >nul
cmdkey /delete:192.168.0.111
ping 127.0.0.1 -n 6 >nul
cmdkey /add:192.168.0.111 /user:guest /pass:""
ping 127.0.0.1 -n 6 >nul
cmdkey /delete:192.168.0.111
ping 127.0.0.1 -n 6 >nul
cmdkey /add:192.168.0.111 /user:guest /pass:""
#1
注意,一个文件不能同时被多个进程操作。。。一个进程在读写的时候,另一个并不能操作,
所以你以文件作为标识,有的时候回发生锁定,建议换个方法,用管道或者socket 通信,比较安全。。。
所以你以文件作为标识,有的时候回发生锁定,建议换个方法,用管道或者socket 通信,比较安全。。。
#2
多进程通过文件进行交互,需要处理好同步
之前用过两种方案
1。每次有新的数据,就生成新的文件,文件名称和生成时间绑定。
lz说的情况,其实就是A每秒生成一个数据文件;B读取文件后将文件删除。
2。如果文件是固定名称。那么写入时,最好先写到一个临时文件,数据保存完成后,
再将临时文件覆盖文件。
之前用过两种方案
1。每次有新的数据,就生成新的文件,文件名称和生成时间绑定。
lz说的情况,其实就是A每秒生成一个数据文件;B读取文件后将文件删除。
2。如果文件是固定名称。那么写入时,最好先写到一个临时文件,数据保存完成后,
再将临时文件覆盖文件。
#3
感觉不是有缓存,就是有什么锁,重启就触发了。
那个日志文件是之前的测试设备生成的,没办法改他的软件。现在有很低概率触发这个异常,就是不知道怎么搞得完美点。
#4
那个win7上的测试软件改不了了。在win10那台机器上,我是直接用我的电脑打开那个共享文件夹的,里面不是最新的。所以代码也是,访问不到最新。
#5
写的很好,很有意思,值得一看
#6
停止读取后。重置共享凭据。用命令行。
ping 127.0.0.1 -n 6 >nul
cmdkey /delete:192.168.0.111
ping 127.0.0.1 -n 6 >nul
cmdkey /add:192.168.0.111 /user:guest /pass:""
ping 127.0.0.1 -n 6 >nul
cmdkey /delete:192.168.0.111
ping 127.0.0.1 -n 6 >nul
cmdkey /add:192.168.0.111 /user:guest /pass:""