Необработанное исключение типа '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 . Следуя приведенному ниже совету, я начну с рассмотрения измененных мной процедур Paint.
Дальнейшее редактирование: Я нашел это. 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); }
, когда я агрессивно удалял ссылки на объекты Drawing, у которых не было Dispose. Отмена этой функции устранила сбои.К сожалению, похоже, я вернулся к отслеживанию утечки памяти, которую искал, когда вносил эти изменения ...