|
Form başvurusu yaptığımızda, bazen mevcut formla ilgili bilgi almamız veya diğer formların kontrollerini çağırmamız gerekir. Burada bunu başarmak için iki yöntem sunuyorum.
Bir formda diğer formlardan kontrolleri çağırmamız gerektiğinde, kontrolleri kullanabiliriz. CheckForIllegaCrossThreadCalls=yanlış; Örneğin: Button.CheckForIllegalCrossThreadCalls=false; Tabii ki, tüm formu çapraz iplikli de yapabiliriz Form.CheckForIllegalCrossThreadCalls=yanlış; Bu, bu formun kontrol veya özelliklerine başka biçimlerde erişmemizi sağlar. Bu en güvenli yöntem olmayabilir ve bazen hata ayıklama hata verebilir.
Burada, konular arasında erişilebilen başka bir yöntemi tanıtacağım. Invoke, görevli üzerinde işlevi çalıştırmak için form iş parçacığına atlar
Öncelikle, bir komisyon ilan etmemiz gerekiyor. public delegate void DelSetTime(object str); O zaman sadece yürütülmesi gereken fonksiyonu hazırlamamız gerekiyor, public void setTime(nesne str); Şimdi temsilciyi formun ipliğine koyabiliriz ve çalıştırılabiliriz Delegate d=new DelsetTime(setTime); Bu. invoke(d,Datetime.Now.ToString()); Böylece çapraz iş ipliği erişimi elde edebiliriz.
Her formun bir form ipliği vardır ve bu iplik, esas olarak formun çizimini ve form kontrollerini tamamlamaktan sorumludur Bu konuya form ipliği veya ana ip dişimine diyoruz. Çoğu zaman veriyi işlemek için forma iş parçacığı eklememiz gerekir ve form kapandığında bu yeni oluşturulan iş parçacıklarını arka plan iş parçacıkları olarak ayarlayabiliyoruz Konu da bitecek. ThreadStart ths=yeni ThreadStart(Demo); İplik th= yeni İp(ths); th. Start(); th. IsBackground=true;
Orijinal: http://bingdao.sinaapp.com/net%E4%BD%93%E7%B3%BB/380.html
|