が呼び出されたときの汎用コレクションのNotSupportedException最初のこと:これはコンパクトなフレームワーク3.5アプリケーションです。ガベージコレクタコールclear()(CF 3.5)
私は非常に奇妙な問題があります。 Dispose-Methodでは、アプリケーションはコレクション内のアイテムを破棄した後、リストをクリアします。これまで特別なことは何もなく、私のアプリケーションでDisposeが呼び出されたときのように機能します。しかし、Garbage CollectorがFinalizerを呼び出すと、同じDispose-Methodを呼び出すと、システムはGeneric CollectionのClear-MethodでNotSupported-Exceptionをスローします。ここで
は、廃棄・メソッドの本体である:
public override void Dispose()
{
if (items != null)
{
foreach (Shape item in items)
{
item.Dispose();
}
items.Clear();
items = null;
}
base.Dispose();
}
私はここで完全にこだわっています。多分誰かがこれを私に説明することができる、あるいは同様の問題を抱えてそれを解決するかもしれない。
なぜファイナライザは、廃棄パラメータなしを呼んでいますか? (1)もう一方のオブジェクトのDisposeメソッドが、スレッドを終了するコンテキストで有効に機能し、(2)他のオブジェクトが適切に扱われないことが分かっている場合を除いて、別のオブジェクトを廃棄することは非常にまれですそれ自体を完成させる。コード例の中には、それらの条件の1つでも満たされていることは示唆されていません。 – supercat