C# 新建bitmap的时候出现parameter error报错! 10

我的程序是将中文编译中bitmap的格式,然后传送给打印机打印。程序是发布到IIS下的,程序功能上没有问题,只是当程序运行了一个月左右的时间,就会出现“parameter... 我的程序是将中文编译中bitmap的格式,然后传送给打印机打印。
程序是发布到IIS下的,程序功能上没有问题,只是当程序运行了一个月左右的时间,就会出现“parameter error”的报错,无法new bitmap。重启IIS可以解决这个问题。不知道是不是跟内存、垃圾回收有关系,想请大神们帮个忙,给一次性药到病除。
我的bitmap的主要代码如下:

private Bitmap CreateImage(string data, Font f)
{
if (string.IsNullOrEmpty(data))
return null;
Bitmap temp = new Bitmap(4600, 4600);
Graphics graphics = Graphics.FromImage(temp);
SizeF sizeF = graphics.MeasureString(data, f);
var image = new Bitmap((int)sizeF.Width, (int)sizeF.Height);
graphics.Dispose();
temp.Dispose();
var g = Graphics.FromImage(image);
var b = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Black, Color.Black, 1.2f, true);
g.Clear(System.Drawing.Color.White);
g.DrawString(data, f, b, 1, 1);
g.Dispose();
return image;
}
我在调用这个方法的最外层的方法里面执行了GC的dispose方法

finally
{
GC.Collect();
GC.WaitForPendingFinalizers();
}
结果还是一样。
请大神帮帮忙啊!
记录的报错日志,供参考!
展开
 我来答
然后去远足
2016-11-18 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2435万
展开全部
两个问题:

1、LinearGradientBrush 对象(就是那个 var b),它也需要 Dispose()。

2、这个方法返回值是一个 Bitmap 对象,它在使用之后你 Dispose() 了吗?

另外尽量不要手动执行 GC。
追问
都dispose了
阳光的雷咩咩
2016-11-17 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7833万
展开全部
建议你把所有手动回收去掉,把bitmap改成using试试。
更多追问追答
追问
我是只对bitmap 一个using呢?还是所有的图像的变量都using呢?您能告诉我一下这个原理吗?您说的不建议的手动回收是指GC?还是dispose呢?
追答
.net自己有垃圾回收算法,手动GC一般都是画蛇添足。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式