一千萬個為什麽

搜索

你如何正確使用實現IDisposable的靜態屬性?

舉個例子:

using (Brushes.Black)
{
...
}

不是一個好主意,因為它是靜態的。下次您的應用使用Brushes.Black時,您將遇到問題,因為它已被處置。

現在,如果你只使用Brushes.Black,那麽可能沒有處理它,因為你只剩下一個非托管資源(希望!)躺在身邊。

但是,一般來說,你是否應該避免使用大量的靜態IDisposables,或者是否有我遺失的東西?

最佳答案

通常只是使用它們,讓框架類擔心處置它們。

他們在那裏,以便您可以使用它們,而不必每次創建和處理它們。每一個都是在您第一次使用它時創建的,並且被緩存在一個哈希表中。框架類負責在應用程序關閉時正確處理它們。

沒有那麽多靜態IDisposables,你應該需要擔心它們。如果你會使用很多刷子,你可能會用循環中的顏色來創建它們(然後你會負責處理它們)。

轉載註明原文: 你如何正確使用實現IDisposable的靜態屬性?