Mesaj pompa nedir? | Netgez.com
SORU
8 ÅžUBAT 2010, PAZARTESÄ°


Mesaj pompa nedir?

this thread (bir yıl önce yayınlanan önemli olduğu etkileşimli olmayan bir oturumda çalışan Kelime ile bu problem ile ilgili bir tartışma. (Oldukça güçlü) tavsiyelerini göz önüne alındığında, bunu yapmak için değil. Bir mesaj olduğunu belirtti "Office API üstlenmek çalıştırıyorsunuz ofisinde bir etkileşimli oturumda bir masaüstü, bir monitör, klavye ve fare ve, en önemlisi, bir mesaj pompa." Bunun ne demek olduğundan emin değilim. (C programlama yaptım# sadece bir yıl için; diğer programlama deneyimim öncelikle ColdFusion ile olmuştur.)

Güncelleme:

Benim program RTF dosyaların büyük bir sayı ile iki parça bilgi sağlık raporu bir dizi oluşturmak için kullanılan ayıklamak için çalışır. RTF biçimlendirme yönergeleri nasıl çalıştığını ve denemek anlamaya yerine, sadece onları açmak ve metni oradan (aslında GUI başlatmadan) çekmeye karar verdim. Bazen, program bir dosya işleme ortasında hiccuped ve Sözcük parçacığı bu belgeye ekli (ben hala bunu kapatmak için nasıl anlamaya var) açık bıraktı. Ben yeniden koştu programı, elbette bir konu bu dosyayı kullanarak bir bildirim var, ve ben salt okunur bir kopyasını açmak için mi? "Evet" dediğimde, Kelime GUI aniden hiçbir yerden çıktı ve dosyaları işleme başladı. Bunun neden olduğunu merak ediyordum; ama belki iletişim kutusunu pompa Windows ana GUI iterek de başladı mesaj attı sonra gibi görünüyor?

Ve şimdi başka bir şey hakkında kafa karıştırıcı ediyorum. Dün ortaya atılan bu soru gibi bir Kayıtsız Kullanıcı - ve sonra temizlenmiş kurabiyelerimi bunu anlayamadım kim olduğumu; şimdi bir kayıtlı kullanıcı var, sıfırdan :-/ onlar Neden yapmak daha kolay bağlanmak cookie tabanlı bir kayıt ile Openıd tabanlı? Hmf.

CEVAP
8 ÅžUBAT 2010, PAZARTESÄ°


Bir ileti döngüsü herhangi bir yerel Windows programı var bu kodu küçük bir parça. Kabaca şöyle görünür:

MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{ 
   TranslateMessage(&msg); 
   DispatchMessage(&msg); 
} 

Bu teknik olarak program() Win32 API alır Windows gelen bir mesaj. Programınızı genellikle zaman orada ™.99, Windows ilginç bir ÅŸey oldu anlatmak için bekleyerek geçiriyor. () TranslateMessage klavye iletileri çeviren bir yardımcı iÅŸlevdir. () Programlama pencere yordamı ileti denir saÄŸlar.

Her GUI sağladı .NET program, Uygulama tarafından başlatılmış döngü bir mesajı var.() Çalıştırın.

Ofis için bir ileti döngüsü alaka COM ile ilgilidir. COM Office programlarını etkin nasıl Microsoft programları.Office.Birlikte çalışma sınıfları çalışma. COM COM coclass adına iş parçacığı ilgilenir, çağrıları bir COM arabirimi üzerinden yapılan her zaman doğru iplik yapılmasını sağlar. En COM sınıflar ThreadingModel ilan kayıt, açık farkla en yaygın olanları (Ofis dahil) içinde bir kayıt defteri anahtarı kullanmak zorunda "". Daire Bir arabirim yöntemi çağırmak için tek güvenli yolu sınıf nesnesi oluşturan aynı iş arama yapma anlamına gelir. Ya da bir başka deyişle: COM sınıfları güvenli iplik-değil çok.

Her iş parçacığı COM COM bir daire aittir sağladı. İki tür, Tek Dişli Daire (STA) ve Çoklu iş Parçacığı bir grup (MTA) vardır. Bir daire COM sınıf bir STA iş parçacığı üzerinde oluşturulması gerekir dişli. Arka tarafta görebilirsiniz .NET programlar, Windows Forms veya WPF bir programın UI iş parçacığı giriş noktası [STAThread] özniteliği vardır. Başka bir iş için Grup modeli iş Parçacığı tarafından ayarlanır.() SetApartmentState yöntemi.

Windows tesisat büyük parçalar halinde UI iş parçacığı STA değilse düzgün çalışmaz. Özellikle Bırak, panoya Sürükleyin, Windows OpenFileDialog gibi diyaloglar. Ve herhangi bir ActiveX kontrolü ve en COM sunucuları, Ofis gibi.

Bir STA iş parçacığı için zor bir şartı asla blok gerekir ve bir ileti döngüsü pompa gerekir. İleti döngüsü COM başka bir iş parçacığı arabirim yöntemi bir ara Mareşal için kullanıyor, çünkü bu önemlidir. Rağmen .NET sıralama aramaların kolay Kontrol yapar.Beginınvoke veya Dağıtıcısı.Örneğin beginınvoke), aslında yapmak çok zor bir şeydir. Çağrı yürüten iş parçacığı tanınmış bir devlet olması gerekir. Sadece keyfi bir iplik kesme ve re-entrancy korkunç sorunlara neden olabilecek bir yöntem çağrısı yapmak için zorlayamazsınız. Bir konu olmalıdır "", yoğun programının devlet mutasyona herhangi bir kod yürütmeden değil. boşta

Onun nereye gittiğini görebilirsiniz belki: bir program için mesaj yürütürken Evet, boş. Gerçek dizme COM oluşturduğu gizli bir pencere ile yer alır, o pencerenin pencere yordamı kod çalıştırmak için PostMessage kullanır. STA iş parçacığı üzerinde. İleti döngüsü bu kod çalışır sağlar.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • footiecyclo

    footiecyclo

    26 EYLÃœL 2009
  • Monica Catral

    Monica Catra

    12 NÄ°SAN 2009
  • SHAYTARDS

    SHAYTARDS

    1 EKÄ°M 2008