C# da invoke metodu

Başlatan yamak, 30 Kasım 2012, 11:22:18

yamak

Aşağıdaki usbLibrary.dll metodlarında birinin kullanımın tam olarak ne oluyor.Yani
if (InvokeRequired)
            {
                Invoke(new EventHandler(usb_OnDeviceRemoved), new object[] { sender, e });
            }


bu kısım tam olarak ne işe yarıyo.
private void usb_OnDeviceRemoved(object sender, EventArgs e)
        {
            if (InvokeRequired)
            {
                Invoke(new EventHandler(usb_OnDeviceRemoved), new object[] { sender, e });
            }
            else
            {
                // this.lb_message.Items.Add("Device was removed");
                Informacion.Text = "Baglati kesildi";
            }
        }

ULAGA

#1
Oradaki Invoke metodu, normal bir metodtur.
Normalde C#'taki Invoke komutu; bir metodu tetiklemeye yarar. Sıklıkla Reflection işlemi ile kullanılır.
Ancak oradaki Invoke son kullanıcı tarafından yazılmış.
Ve USB aygıtı çıkarıldığında; içerisinde bulunduğu event ile argümanlarını gönderiyor.

peko


Invoke etmek ; Backgroundworker çalışması sırasında objelere erişimi sağlayabilmek ve değişiklik yapmak için objenin hafızada bir kopyasını oluşturup , değişikliği yapıp, eskisi ile değiştirilmesi işlemine denir.

Invoke rutini içine yazılmayan objelere çalışma sırasında erişmeye kalkışırsanız çakışma (cross thread) hatası alırsınız.
Bu durumu önlemek içinde thread içindeki erişim sağlanması gereken objeleri Invoke etmek gerek.
" Bazıları zeka'sını iş'i zorlaştırmak için, bazıları ise kolaylaştırmak için kullanır.. "

cinfis

Alıntı yapılan: peko - 01 Aralık 2012, 01:31:54
Invoke etmek ; Backgroundworker çalışması sırasında objelere erişimi sağlayabilmek ve değişiklik yapmak için objenin hafızada bir kopyasını oluşturup , değişikliği yapıp, eskisi ile değiştirilmesi işlemine denir.

Invoke rutini içine yazılmayan objelere çalışma sırasında erişmeye kalkışırsanız çakışma (cross thread) hatası alırsınız.
Bu durumu önlemek içinde thread içindeki erişim sağlanması gereken objeleri Invoke etmek gerek.

"Invoke rutini içine yazılmayan objelere çalışma sırasında erişmeye kalkışırsanız çakışma (cross thread) hatası alırsınız. "
bu kısmı biraz açar mısınız tam anlayamadım?