2010-02-17 20 views
0

我有一個System.Drawing.Pen _pen在GDI + a「參數無效」。在設置筆。寬度

當一些迭代是設置_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() 

什麼,爲什麼?

回答

2

你在處理_pen變量嗎?

如果不是,這可能表示資源泄漏問題,因爲您懷疑。

如果是,這可能表示您正在訪問已處置的實例。 GDI對象在處置後經常使用ArgumentException。

+0

是的,我處理Pen變量。也許你有理由。 – serhio

0

你是如何初始化_pen變量的?根據MSDN documentation,如果您使用Pens類初始化變量,您將得到一個不可更改的Pen,其Width參數無法設置。試圖這樣做會導致引發ArgumentException,這正是你所看到的。

+0

如上所述,pen.Width集在一些迭代中失敗。我的意思是,這不是第一次。我像這樣創建了這個筆_pen = new Pen(Color.Black),還有Pens.Black.Clone() - 結果相同。 – serhio

0

我開始假設來自內存泄漏問題。顯然,OS不能創建更多的10.000 GDI +對象...

經過一些分析後,我在應用程序中檢測到一個巨大的內存泄漏,所以錯誤來自那裏。

+0

請給我們更多的代碼。筆的創建過程如何? –

+0

@Agnel,請參閱我的kbrinley評論。 – serhio