Произошло необработанное исключение типа System.ArgumentException в System.Drawing.dll
Дополнительная информация: параметр недействителен.
Это происходит в конце этого кода.
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. Возврат этой функции убрал сбои. К сожалению, похоже, что я вернулся к поиску утечки памяти, которую я искал, когда вносил эти изменения ...