14

ユーザーが次の画像をクリックするたびに最新の 2 つの画像を保存するためのキャッシュがあります。完全に削除されます。

 List<Image> BackimageList = new List<Image>();

 private void BackimageListCache(Image img)
{
  BackimageList.Add(img);
  if (BackimageList.Count > 2) 
   {
    BackimageList.RemoveAt(0); //oldest image has index 0
   }
}
4

2 に答える 2

21

.NET のコレクションはオブジェクトを「所有」しません。したがって、オブジェクトが他の場所で使用されていないと仮定することはできません。したがって、オブジェクトを破棄することはできません。所有権のルールは、完全に実装する必要があります。これは、たとえば、画像が PictureBox に表示されていないことも確認する必要があることを意味します。

画像がメモリを占有しないようにすることも同様に不安定です。自分でメモリを管理することはできません。それはガベージ コレクターの仕事です。ただし、Image はかなりの量のアンマネージ メモリを使用してピクセル データを格納します。このメモリは、Dispose() を呼び出すと解放されます。Image の管理対象部分は、GC が到達するまでメモリ内に残ります。小さいです。

于 2013-04-24T01:16:33.443 に答える