0

我有一个System.Drawing.Pen _pen.

在某些迭代中设置_pen.Width = 3时,它给了我:

System.ArgumentException 
  Message="Parameter is not valid."
  Source="System.Drawing"  - System.Drawing.dll
  StackTrace:
       at System.Drawing.Pen.set_Width(Single value)
       at MyProject.ctlPanneauGraphique.CustomLine.set_BorderWidth(Int32 value) in 
       ....
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       at MySolution.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
       at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()

什么和为什么?

4

3 回答 3

2

您是否正在处理 _pen 变量?

如果不是,这可能表明您怀疑存在资源泄漏问题。

如果是,这可能表明您正在访问已处置的实例。GDI 对象在释放后使用时通常会抛出 ArgumentException。

于 2010-02-18T09:30:24.260 回答
0

你是如何初始化 _pen 变量的?根据MSDN 文档,如果您使用 Pens 类来初始化变量,您将得到一个不可变的 Pen,其 Width 参数无法设置。尝试这样做将导致引发 ArgumentException,这正是您所看到的。

于 2010-02-17T18:58:56.463 回答
0

我开始假设这来自内存泄漏问题。显然操作系统不能创建超过 10.000 个 GDI+ 对象......

执行一些分析后,我检测到应用程序中存在巨大的内存泄漏,因此错误来自那里。

于 2010-02-18T09:09:49.977 回答