c# weakreference 예제

가비지 수집은 언제든지 발생할 수 있으므로 약한 참조는 스레드에서 안전합니다. 그러나 스레드 안전은 약한 참조에 대한 단일 요청과만 관련이 있습니다. 예를 들어 다음 코드는 스레드에서 안전하지 않습니다. 그러나 강력한 참조를 다시 설정하기 전에 가비지 수집기에서 개체에 도착할 위험이 항상 있다는 점을 기억해야 합니다. 이 예제에서는 위에서 WeakReference를 사용하는 올바른 방법과 본질적으로 동일한 사용량을 보여 줍니다. 캐시는 인덱스 값으로 키를 수 있는 WeakReference 개체의 IDictionary를 사용하여 생성됩니다. WeakReference 개체에 대한 대상 속성은 데이터를 나타내는 바이트 배열의 개체입니다. myObj는 사용자의 기존 개체입니다. 일단 당신이 약한에 할당Ref 변수, null에 원래 강력한 참조를 설정 해야 합니다 (그렇지 않으면, 포인트는 무엇입니까?). 이제 가비지 수집이 있을 때마다 object weakRef가 참조하는 것이 수집될 수 있습니다.

이 개체에 액세스하려면 이 예제와 같이 WeakReference의 IsAlive 속성을 사용하도록 유혹할 수 있습니다. 사용하지 않은 항목은 캐시에서 제거됩니다) 예를 들어 상황을 강제로 사용 하려면이 코드를 사용할 수 있습니다: 개체와 약한 참조를 설정 하려면 추적할 개체의 인스턴스를 사용 하 여 WeakReference를 만듭니다. 그런 다음 Target 속성을 해당 개체로 설정하고 원래 참조를 개체에 null로 설정합니다. 코드 예제는 클래스 라이브러리의 WeakReference를 참조하십시오. http://msdn.microsoft.com/en-us/library/system.weakreference(v=VS.100).aspx 쓰기 고성능 .NET 코드에서, 저는 2장(가비지 콜렉션)에서 약한 참조 유형을 간략하게 언급하지만 너무 많이 들어가지는 않습니다. 그러나 블로그의 경우 WeakReference, 작동 방식 및 사용 시기에 대한 자세한 내용을 설명하는 작은 일련의 게시물을 몇 가지 예제 구현과 함께 시작하고 싶습니다. 이 첫 번째 게시물에서는 그것이 무엇인지, 어떤 옵션이 있는지, 어떻게 사용하는지 에 대해 다룹니다. 그 이유는 첫 번째 예에서와 동일하며, if와 DoSomething 사이에 값이 수집될 수 있습니다. 그것은 드문 일이지만, 일어날 수 있습니다. 따라서 IsAlive 속성은 단독으로 사용하는 경우에만 사용해야 합니다. 내 경우에는 일반적으로 해당 콘텐츠가 이미 수집되었을 때 컬렉션에서 약한 참조를 제거하려는 경우에만 이러한 속성을 확인하므로 IsAlive 속성을 한 번만 확인합니다. 글쎄, 첫 번째 것은 예입니다.

WeakReference가 캐싱에 좋지 않은 경우 약한 참조로 저장된 배경 이미지의 예가 있는 이유는 무엇입니까? 분명히 그들은 오류를 보았다, 나는 더 이상 그 예를 찾을 수 없습니다.

Ο ΚΑΙΡΟΣ
facebook
facebook
ΑΡΙΘΜΟΣ ΕΠΕΣΚΕΠΤΩΝ
  • 0Total visitors:
  • Visitors today:
  • Visitors yesterday:
  • Visitors last week:
  • Visitors per month:
  • 0.00Visitors per day:
  • 0Visitors currently online: