我在我的項目上運行完整的代碼分析,它說它有500個問題。我已經把它煮成了300個,但我正在爲一個我似乎無法找到解決方案的問題而苦苦掙扎。在這種情況下解析代碼分析「CA2000」規則?
規則CA2000狀態:
如果一次性對象不明確的所有引用之前,它是超出範圍設置,對象會在某個不確定的時間被設置在垃圾收集器運行的終結物體。由於可能發生的異常事件會阻止對象的終結器運行,因此應該明確處理該對象。
有關規則的更多信息,請參見上面鏈接的頁面。
該規則失敗上的代碼是這樣的:
internal Window(Game game, Control parent, string title, bool visible)
: base(game, parent, visible, new ScreenspaceRectangle(game, Color.Black, Vector.Zero, Vector.Zero))
{
}
和描述是:
CA2000:Microsoft.Reliability:在方法「Window.Window(遊戲,控制字符串,布爾)',調用System.IDisposable.Dispose對象'新的ScreenspaceRectangle(遊戲,Color.Black,Vector.Zero,Vector.Zero)'之前,所有引用超出範圍。
我知道這個問題可以通過在創建對象周圍使用「using」聲明來正常解決,以確保它始終正確處置。但是在這種情況下我怎麼解決它?
爲什麼ScreenspaceRectangle需要放置? – 2011-07-31 06:52:55