Multithread uygulamalar ve kullanıcı arayüzünün güncellenmesi:

.NET Framework 2.0 uygulamanızda birden fazla thread ile çalıştığınızı varsayalım. Bu thread’ler çalışırken bazen NullReferenceException hatası alıyorsanız ve nedenini bulamıyorsanız, sebebi, thread’lerden birisinin kullanıcı arabirimini güncellemesi olabilir. Kullanıcı arabirimini sadece ana thread içinden güncellemeniz gerekmektedir.

Hangi thread’in neden bu hatayı aldığını bulmak için şu yöntemi deneyebilirsiniz:

Constructor’ınıza Control.CheckForIllegalCrossThreadCalls = true; ifadesini ekleyin ve uygulamanızı Visual Studio içinde debug mode’da çalıştırın. Bu sefer aynı sorunu tekrar yaşadığınız zaman, VS size hangi thread’de bu sorunla karşılaştığınızı söyleyecektir. Örnek mesaj şu şekilde olabilir:

Cross-thread operation not valid: Control 'txtUsername' accessed from a thread other than the thread it was created on.

Geçerli olduğu platformlar:

.NET 2.0

--

AMB

Comments

  • Anonymous
    March 12, 2009
    PingBack from http://www.clickandsolve.com/?p=21846
  • Anonymous
    May 22, 2009
    peki bu sorunun kesin cozumu nedir.diyelim bir seri portdan data aliyoruz ve gelen datayi ekrana yazdiramiz lazim.bu durumda cross thread hatasi alacagiz.nesnenin invokerequired ozellegini kullanarak yapabiliyoruz.ama daha temiz bir cozum biliyor musunuz?