C#-我如何找到ArgumentException发生的原因
本文关键字:ArgumentException 何找 C#- | 更新日期: 2023-09-27 18:14:50
System.Drawing.dll 中发生类型为"System.ArgumentException"的未处理异常
附加信息:参数无效。
这发生在该代码的末尾。
public void WriteStatusMessage(string message)
{
m_ToolStripStatusLabelUserMessage.BackColor = WriteDefaultBackColor;
m_ToolStripStatusLabelUserMessage.ForeColor = WriteDefaultForeColor;
m_ToolStripStatusLabelUserMessage.Text = CommonConstants.Space + message;
Update();
}
如果我在代码中添加断点,它会通过该错误,但会在以后的更新中发生。据我所知,我们正在做的唯一图形代码包括绘制图形(这与我试图打开一个历史手表变量值的文件,然后将其显示为图形,从而得到这个错误的方式一致(,并且只使用画笔、笔,和字体(我最近的一部分更改是通过添加"使用"来确保它们被处理掉,因为我们遇到了内存泄漏(。
主要是,我希望有人能给我指明正确的方向,开始解码这个。令我非常沮丧的是,这是一种进行了大量更改并进行了签入的情况,我可以发誓我在签入之前已经检查过了,特别是因为这一行动与我正在解决的问题有关,但很难与事实争论,事实是它现在正在失败。
谢谢你能提供的任何帮助。
编辑:我在一次签入时设法恢复到了早期版本,所以我对在哪里查找问题有了一个大致的想法。它确实是图形库之一,特别是绘制图形的库,它是对http://www.codeproject.com/KB/miscctrl/GraphComponents.aspx.根据下面的建议,我将从查看我修改的绘制程序开始。
进一步编辑:我找到了。OnPaint,正如预测的那样:
protected override void OnPaint(PaintEventArgs e)
{
if (!Visible)
return;
Graphics graphics = e.Graphics;
Draw(graphics);
base.OnPaint(e);
}
变成
protected override void OnPaint(PaintEventArgs e)
{
if (!Visible)
return;
using (Graphics graphics = e.Graphics)
{
Draw(graphics);
}
base.OnPaint(e);
}
当我积极删除对没有Dispose的图形对象的引用时。恢复该功能消除了崩溃。不幸的是,当我做出这些更改时,我似乎又回到了寻找内存泄漏的位置。。。
在Visual Studio中对异常使用中断。菜单:Debug->Exceptions,然后单击要查找的异常上的"抛出"。
哦,别忘了调试编译并使用调试器运行;(