C# FileSystemWatcher无法在短时间内显示帧

C# FileSystemWatcher无法在短时间内显示帧,c#,winforms,picturebox,C#,Winforms,Picturebox,我使用pictureBox显示jpg文件。我在文件夹中创建新图片,我使用FileSystemWatcher监视文件夹,当创建事件被引发时,我得到要显示的图像流 但是当引发创建的事件时,我将pictureBox.Image属性更新为新流,但它不会显示在pictureBox中。//使用项目图片VideoGenerator中的测试控制台程序 当我复制一个新的jpg文件,并将其粘贴到文件夹中时,它可以显示出来 我怎么了 检查此处的代码:创建文件时,文件中可能还没有内容,可能是0Kb文件。请记住,Crea

我使用pictureBox显示jpg文件。我在文件夹中创建新图片,我使用FileSystemWatcher监视文件夹,当创建事件被引发时,我得到要显示的图像流

但是当引发创建的事件时,我将pictureBox.Image属性更新为新流,但它不会显示在pictureBox中。//使用项目图片VideoGenerator中的测试控制台程序

当我复制一个新的jpg文件,并将其粘贴到文件夹中时,它可以显示出来

我怎么了


检查此处的代码:

创建文件时,文件中可能还没有内容,可能是
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;
}

我怎么了?
这真的是你的问题吗