Makale numarası: 828988 - Son Gözden Geçirme: 09 Şubat 2004 Pazartesi - Gözden geçirme: 1.4 Bir STA üzerinde temel BIR konsol uygulaması, COM bileşenlerinin yayım gecikme ve çöp toplayıcısını toplayan nesneler Finalize yöntemlerini çağrıları geciktirebilir
BelirtilerBir tek iş parçacıklı grup üzerinde (STA) temel alan bir konsol uygulaması oluşturur ve sonra da STA Bileşen Nesne Modeli (COM) bileşenlerini kullanır ve konsol uygulaması Monitor.Enter yöntemi Thread.Join yöntemini ve diğer arama gibi COM iletileri pump için yeterli operasyonları gerçekleştirmek aşağıdaki belirtilerden ortaya çıkabilir. Ayrıca, konsol uygulaması, uzun bir süredir çalıştırılan ve, iletileri Console.ReadLine yöntemini çağıran gibi pump işlemlerini gerçekleştirir aşağıdaki belirtilerden oluşabilir:
NedenBir STA COM bileşeni çağrısı, bileşen yayımlamayı dahil olmak üzere bir çağrı doğru teslim etmek için bileşen oluşturulduğu iş parçacığının iletileri pumping olması gerekir. Yönetilen kod artık bir COM bileşeni başvurduğunda, iş parçacığının finalizer bileşeni <a1>sürüm</a1> yöntemini çağırmalısınız. Bileşen oluşturulduğu iş parçacığının STA iletileri pumping, ancak çağrı blokları uygulama iş parçacığının kadar iletileri yeniden pumping başlar. Bazı uygulamalar, COM bileşenleri ve nesneleri aşamasındadır çok oluşturun. Bu uygulamalarda finalizer iş parçacığının lot harcadığı süre için STA beklerken engellendi pump iletileri için iş parçacığı, iş parçacığının finalizer, aktivite tamamlamak mümkün olabilir. Her iki listeyi COM bileşenleri sürüm ve sonlandırmasını yönetilen nesneleri listesi sonsuza kadar büyümesine. Bu sorun devam ederse, STA uygulama işlemi kullandığı bellek miktarı zaman içinde artabilir. Ayrıca, GC.WaitForPendingFinalizers yöntemini çağıran herhangi bir iş parçacığının süresiz olarak engelleyebilir. ReadFile ve WriteFile, işletim sisteminin, dosya ve konsol giriş/çıkış (g/Ç) işlemleri iletileri pump. Işletim sistemi üzerinde ReadFile API Console.ReadLine olduğundan, Console.ReadLine pump iletileri değil ya da yapar. Bu nedenle, Console.ReadLine çağıran herhangi bir iş parçacığı iletileri çağrısı sırasında pump değil. ÇözümBu sorunu gidermek için <a0></a0>, MTA iş parçacığı yerine STA iş parçacığı oluşturma ve konsol uygulamalarında COM bileşenleriyle iletişim kurmak için kullanın. Bir MTA için uygulamanın ana iş parçacığı ayarlayabilirsiniz. Bunu yapmak için <a0></a0>, System.MTAThread uygulamak için ana yöntemi, aşağıdaki öznitelik: ReferanslarMicrosoft .NET Framework remoting hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin: http://msdn2.microsoft.com/en-us/library/1912sb9w(vs.71).aspx
(http://msdn2.microsoft.com/en-us/library/1912sb9w(vs.71).aspx)
.NET Framework atık toplama işlemi hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitelerini ziyaret edin:http://msdn.microsoft.com/msdnmag/issues/1100/gci/
(http://msdn.microsoft.com/msdnmag/issues/1100/gci/)
http://msdn.microsoft.com/msdnmag/issues/1200/GCI2/
(http://msdn.microsoft.com/msdnmag/issues/1200/GCI2/)
Bir <a0>STA</a0> bileşeninden çağrıları engelleme hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın: 291837
(http://support.microsoft.com/kb/291837/
)
BILGI: engelleyen bir <a0>STA</a0> bileşeninden çağrılarınızı değil
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:828988
(http://support.microsoft.com/kb/828988/en-us/
)
| Diğer Kaynaklar Diğer Destek Siteleri
ToplulukHemen Yardım AlMakale çevirileri |






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


Üste