C# FileSystemWatcher无法在短时间内显示帧
我使用pictureBox显示jpg文件。我在文件夹中创建新图片,我使用FileSystemWatcher监视文件夹,当创建事件被引发时,我得到要显示的图像流 但是当引发创建的事件时,我将pictureBox.Image属性更新为新流,但它不会显示在pictureBox中。//使用项目图片VideoGenerator中的测试控制台程序 当我复制一个新的jpg文件,并将其粘贴到文件夹中时,它可以显示出来 我怎么了C# FileSystemWatcher无法在短时间内显示帧,c#,winforms,picturebox,C#,Winforms,Picturebox,我使用pictureBox显示jpg文件。我在文件夹中创建新图片,我使用FileSystemWatcher监视文件夹,当创建事件被引发时,我得到要显示的图像流 但是当引发创建的事件时,我将pictureBox.Image属性更新为新流,但它不会显示在pictureBox中。//使用项目图片VideoGenerator中的测试控制台程序 当我复制一个新的jpg文件,并将其粘贴到文件夹中时,它可以显示出来 我怎么了 检查此处的代码:创建文件时,文件中可能还没有内容,可能是0Kb文件。请记住,Crea
检查此处的代码:创建文件时,文件中可能还没有内容,可能是
0Kb
文件。请记住,Created
事件是在创建文件时引发的,而不是在文件包含某些数据时引发的
您需要钩住Changed
事件。请检查上次更改的时间
事件触发的时间,如果上次更改的时间间隔很大,则假定文件已完全写入
您的案例示例:
Action | Event
1. Create a new file | Created Event
2. Added some content | Changed Event
3. Added some more content | Changed event
因此,当2和3之间有一个间隙(比如5秒)时,您假设用户已经完成了将文件写入磁盘的操作
DateTime dtLastWrite = DateTime.Now;
private static void OnChanged(object source, FileSystemEventArgs e)
{
dtLastWrite = DateTime.Now();
}
private static void OnChanged(object source, FileSystemEventArgs e)
{
if (DateTime.Now.Subtract(dtLastWrite).TotalSeconds > 5)
ReadTheFileNow(); //start to read the file now.
else
dtLastWrite = DateTime.Now;
}
我怎么了?
这真的是你的问题吗