Build konferansında Windows 8 Developer Preview’ın duyurulması ile beraber .NET Framework 4.5 önizleme sürümü de duyuruldu. Bu sürümle beraber WPF'e pek çok yeni özellikler geldi. Bir önceki yazımda bu yeniliklerden başlıklar halinde kısaca bahsetmiştim.

WPF 4.5 ile artık olaylara kolaylıkla zayıf referans (Weak Reference) oluşturabilme desteği geldi. Bilindiği üzere olayları dinlemek, sistemde bellek sızıntılarına sebep olmaktadır. Aşağıdaki kod buna bir örnektir.

button.Click+=new RoutedEventHandler(button_Click);  

Normalde bir dinleyiciye olay ataçlayarak dinleyicinin nesne ömrünü, kaynağın nesne ömrüyle etkilemiş oluyoruz. WPF 4.5 ten önce bu olay sızıntılarını önlemek için IWeakEventListener isimli bir arayüz kullanarak gerçekleştiriyorduk. Hatta her bir olay için ayrı ayrı zayıf olay yöneticisi oluşturmak zorundaydık. Artık Framework 4.5 ile jenerik WeakEventManager sınıfı geldi ve işimiz çok daha kolaylaştı. O kadar kolaylaştı ki WeakEventManager sınıfının hali hazırda kullanabileceğimiz AddHandler ve RemoveHandler olmak üzere iki static metodunu kullanarak bunu yapabilir hale geldik. Dilerseniz lafı daha fazla uzatmadan bellek sızıntılarını WPF 4.5’de ne kadar kolay bir şekilde engelleyebileceğimizi görelim.

public MainWindow()  
{
    InitializeComponent();
    btnClick.Click += new RoutedEventHandler(Button_Click);
    WeakEventManager<Button, RoutedEventArgs>.AddHandler(button, "Click", Button_Click);
}     

void Button_Click(object sender, RoutedEventArgs e)  
{
    //TODO
}

Yukarıdaki kod bloğunda XAML tarafındaki btnClick isimli butonumuzun click olayı için weak reference oluşturmuş olduk. Tek yapmamız gereken AddHandler static metoduna kaynak, olay adı ve olay yöneticisini parametre olarak vermek. Sizce de kolay değil mi? Bir sonraki yeni özellikte görüşmek üzere.

About the Author