Makale numarası: 175332 - Son Gözden Geçirme: 21 Kasım 2006 Salı - Gözden geçirme: 2.1 SORUN: İşlem Broadcasting ileti kilitlenme neden oluyor
Daha fazla bilgiBir işlemin sonlandığını zaman bildirim almak için <a0></a0>, bir Win32 uygulaması WaitForSingleObject() arayın ve uygulamanın bekledi işlem tanıtıcısı belirtmek. Normalde bu bekledi uygulama sona erdirir kadar engellemek bekleyen işlem neden olur. Sonra yürütülecek WAIT_OBJECT_0 ve bekleyen işlem devam edecek WaitForSingleObject() döndürecektir. Bazen uygulamalar iletileri bazı veya tüm diğer pencerelere sistemde yayın. Bu durumda bekleme uygulamayı iletileri işleyecek biçimde boş değilse, yukarıdaki yöntemi bir kilitlenme durumu neden olur. Bekletmeyi uygulama pencere iletilerini işleme kendi iş parçacığında beklemektedir, bekleme tamamlanana kadar sonra hiçbir ileti işlenebilir. Işlem SendMessage() çağrılarda bekledi ve bir ileti penceresinde <a0>bekleme</a0> işleminin yayınlar, sonra bir kilitlenmeyle sonuçlanır. SendMessage() ileti işlenir ve bekleyen işlem, WaitForSingleObject() çağrı dönünceye kadar ileti gönderme edemiyor kadar döndürmeyecektir. Ortak bir açıklaması için OLE göstergeleri, bu sorunun, başvurun aşağıdaki Knowledge Base makalesine: 136885
(http://support.microsoft.com/kb/136885/EN-US/
)
BILGI: OLE Threads iletileri gönderme olmalı Bu kilitlenme önlemek için <a0></a0>, bekleyen uygulama, bu nedenle, işlem iletilerinin ana iş parçacığına boşaltmayı ayrı bir iş parçacığı beklemeniz gerekir. Işlem, bekledi tamamlar ve WaitForSingleObject() döndürür, bekleyen iş parçacığı ana iş parçacığı ana penceresinin ileti sırası için kullanıcı tanımlı bir ileti göndererek bildirebilir. Ana iş parçacığı kullanıcı tarafından tanımlanan ileti bekledi açma işleminin tamamlanması yorumlar. Kullanıcı tanımlı iletileri hakkında daha fazla bilgi için lütfen aşağıdaki Knowledge Base makalesine başvurun: 86835
(http://support.microsoft.com/kb/86835/EN-US/
)
Nasıl YAPıLıR: Uygulama kullanmak için özel iletiler tanımla Bu sorunun oluşmaması için başka bir yolu, iletiye işlenmesi gerektiğinde, DispachMessage() çağıran bir döngü MsgWaitForMultipleObjects() Çağrı bekletmeyi iş parçacığının almaktır. Bu teknik, örneğin, OLE sorun (Q136885) farklı yukarıda başvurulan Bilgi Bankası makalesine bakın. BelirtilerBir iletiyi yayınlar, başka bir işlem tanıtıcı bir işlem bekleyeceği zaman BIR kilitlenmeyle sonuçlanır. NedenBekleyen işlem (ana pencere iş parçacığının) penceresine gönderilen iletileri işleyen iş parçacığında bekliyor bu ortaya çıkar. ÇözümBu bir kilitlenme durumu önlemek için ana pencere iş parçacığının pencere iletilerini işleme veya MsgWaitForMultipleObjects() API iletileri gönderen ile birlikte kullanmak boş bırakarak ayrı bir iş parçacığında bekleyen işlem bekleyebilir. Bu makaledeki bilginin uygulandığı durum:
Otomatik TercümeÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir. Makalenin İngilizcesi aşağıdaki gibidir:175332
(http://support.microsoft.com/kb/175332/en-us/
)
| Diğer Kaynaklar Diğer Destek Siteleri
ToplulukMakale çevirileri |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Üste