문제

I have a System.Drawing.Pen _pen.

When in some iterations is setting _pen.Width = 3 it gives me:

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()

What and why?

도움이 되었습니까?

해결책

Are you disposing the _pen variable?

If not, this may indicate a resource leak problem as you have suspected.

If yes, this may indicate that you are accessing a disposed instance. GDI objects often throw ArgumentException when used after they have been disposed.

다른 팁

How are you initializing the _pen variable? According to MSDN documentation, if you are using the Pens class to initialize your variable, you will get an immutable Pen, whose Width parameter cannot be set. Attempting to do so will result in an ArgumentException being thrown, which is exactly what you are seeing.

I started supposing that comes from a memory leak problem. Apparently the OS cant create more that 10.000 GDI+ objects...

After some analysis was performed I detected a huge memory leack in the application, so the error came from there.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top