在界面上有十几个prictureBox根据业务需要轮流读取3张图片,代码是如下,在配置好的机器上不报错,在配置差的机器上报内存不足,有的是时候报在 System.ArgumentException 中第一次偶然出现的“System.Drawing.dll”类型的异常
/// <summary>
/// 加载图片
/// </summary>
/// <param name="box"></param>
/// <param name="url"></param>
private void LoadPrictureBox(PictureBox box, string url)
{
try
{
if (box.Image != null)
{
box.Image=null;
}
Bitmap bmp = (Bitmap)Bitmap.FromFile(Application.StartupPath + url);
Bitmap bmpR1 = bmp.Clone() as Bitmap;
bmp = null;
Invoke(new MethodInvoker(delegate()
{
box.Image = new Bitmap(bmpR1);
}));
}
catch (Exception ex)
{
}
/// <summary>
/// 加载图片
/// </summary>
/// <param name="box"></param>
/// <param name="url"></param>
private void LoadPrictureBox(PictureBox box, string url)
{
try
{
if (box.Image != null)
{
box.Image=null;
}
Bitmap bmp = (Bitmap)Bitmap.FromFile(Application.StartupPath + url);
Bitmap bmpR1 = bmp.Clone() as Bitmap;
bmp = null;
Invoke(new MethodInvoker(delegate()
{
box.Image = new Bitmap(bmpR1);
}));
}
catch (Exception ex)
{
}
解决方案 »
- 请问在编程里面什么叫句柄,什么叫手柄???
- 关于重写的一个问题,比较麻烦,请大家帮帮忙 谢谢~~~~~~~
- domainUpDown控件上下如何改变值
- DataGridView中下拉选框的问题
- C#中从数据库中读取字段,并把数据保存到数组中?急!!!!!!!!!!!!!
- 请问有什么软件可以打包安装以以下软件!!!
- 不显示删除回复显示所有回复显示星级回复显示得分回复 用C# 做串口通信 serialprot
- 如何取得客户端分辨率并写入数据库?
- c#中回车换行符是什么?
- 一个概念问题
- 一个关于 ass = Assembly.LoadFrom 反射动态加载的问题
- C#控制台中有没有关于鼠标点击位置的方法
多线程能不用就不用。多线程是BUG窝。
它的作用是监视某个指定文件夹。当此文件夹中的文件被修改或删除或新增都会触发事件。
在这个场景里,你可以用它来监视你的图片文件夹。并在事件里写加载图片的操作。
这样,就回避了多线程引起的风险。因为.net已经帮你做好了一切。