xem xét mã này:Làm thế nào để có được những mục tiêu của một tham chiếu yếu trong một cách an toàn
var weakRef = new WeakReference(new StringBuilder("Mehran"));
if (weakRef.IsAlive)
{
// Garbage Collection might happen.
Console.WriteLine((weakRef.Target as StringBuilder).ToString());
}
Có thể cho GC.Collect
để chạy sau khi kiểm tra weakRef.IsAlive
và trước khi sử dụng weakRef.Target
.
Tôi có sai với điều này không? Nếu nó có thể, ss có một cách an toàn để làm điều đó?
Ví dụ: API như weakRef.GetTargetIfIsAlive()
sẽ phù hợp.
Kiểm tra http://msdn.microsoft.com/en-gb/library/ms404247.aspx –
Trước tiên, bạn nên truyền tới tham chiếu mạnh và sau đó kiểm tra 'null'. Không có cách nào bạn có thể đảm bảo tài liệu tham khảo mạnh mẽ của bạn sẽ không được null trước. –