效果
![在这里插入图片描述](http://image109.360doc.com/DownloadImg/2022/06/2913/247703992_1_20220629015625331.gif)
方法
- 新建一个Form,插入pictureBox控件
- 新建一个定时器,设置每1秒钟刷新一次pictureBox的图片,但是需要注意读取图片时资源锁定导致图片无法被更改的情况,以下为具体实现:
//author:FarryNiu
//https://niuzifan.blog.csdn.net/article/details/109450489
//实例化Timer类,设置间隔时间为1秒;
System.Timers.Timer t = new System.Timers.Timer(1000);
//定时执行的事件为theout;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);
//设置为一直执行(true);
t.AutoReset = true;
//是否执行System.Timers.Timer.Elapsed事件;
t.Enabled = true;
//theout事件
public void theout(object source, System.Timers.ElapsedEventArgs e)
{
try
{
fileStream = new FileStream("图片路径", FileMode.Open, FileAccess.Read);
pictureBox1.Image = Image.FromStream(fileStream);
//释放图片资源
fileStream.Close();
fileStream.Dispose();
//销毁多余对象
GC.Collect();
}
catch(System.IO.IOException)
{
//当读取时遇到共享冲突则关闭读取流
fileStream.Dispose();
}
}
总结
如果要更新显示的图片为本地图片,就不可避免的存在读写冲突,在本程序中读取后马上释放图片资源,以保证大部分时间图片可以被改写,但是当定时器频率较高时会存在较多的冲突,因此若想高性能显示一张快速变化的图片,不适宜使用本地文件为媒介,最好在运行内存中实现改写后显示,本方法适用于图片变化频率低的情况。
|