Select the product you need help with
Aplikace konzoly, který je založen na STA může zpozdit vydání součásti COM a může zpozdit volání metody Finalize objekty shromažďuje nesmyslné kolekcíID článku: 828988 - Produkty, které se vztahují k tomuto článku. PříznakyPokud aplikace konzoly, který je založen na jedním podprocesem apartment (STA) vytvoří a používá STA komponent model (COM) a aplikace konzoly provedení dostatečná operací Pumpa zprávy COM, jako je například volání metody Monitor.Enter metoda Thread.Join a ostatními, může nastat následující příznaky. Pokud aplikace konzoly provádí operace, které, spustit dlouhou dobu a není, Pumpa zpráv, například volání metody Console.ReadLine může také dojít následující příznaky:
PříčinaVolání komponenty STA COM doručit správně, včetně volání komponenty, uvolněte musí podproces, kde byla vytvořena součást čerpání zprávy. Při spravovaný kód již odkazuje součást COM, podproces finalizer třeba zavolat metodu Release součásti. Však pokud podproces STA, kde byla vytvořena součást není čerpání zprávy, bloky volání aplikace dokud podprocesu začne znovu čerpání zprávy. Některé aplikace vytvářejí velké množství komponenty COM a objekty, které mohou být dokončeny. V těchto aplikacích Pokud podproces finalizer stráví šarže času blokován, zatímco čeká STA podprocesu čerpadlo zpráv, podproces finalizer pravděpodobně nebude moci dokončit jeho činnosti. V seznamu com součásti vydání a seznamu Spravované objekty Finalizovat může narůstat neomezeně dlouho. Pokud k tomuto problému dojde, může zvýšit množství paměti, který používá proces aplikace STA časem. Podproces, který volá metodu GC.WaitForPendingFinalizers také může blokovat neomezeně dlouho. Operace (IO) souboru a konzoly vstupu a výstupu operačního systému, například funkci ReadFile a WriteFile není Pumpa zprávy. Protože Console.ReadLine závisí na funkci ReadFile API operačního systému, provede Console.ReadLine buď není čerpadlo zpráv. Podproces, který volá Console.ReadLine tedy není Pumpa zpráv během volání. ŘešeníChcete-li tento problém vyřešit, použijte MTA podprocesů namísto podprocesů STA vytvořit a komunikovat s součásti COM v aplikace konzoly. Můžete nastavit hlavní podproces aplikace MTA. Použít System.MTAThread hlavní metody následující atribut: OdkazyDalší informace o vzdálené komunikace Microsoft .NET Framework naleznete na následujícím webu: http://msdn2.microsoft.com/en-us/library/1912sb9w(vs.71).aspx Další informace o uvolnění paměti generace .NET Framework navštivte následující weby:
(http://msdn2.microsoft.com/en-us/library/1912sb9w(vs.71).aspx)
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/)
Další informace o blokování volání z STA součásti klepněte na následující číslo článku databáze Microsoft Knowledge Base: 291837
(http://support.microsoft.com/kb/291837/
)
INFORMACE: Není volání blokování z STA součásti VlastnostiID článku: 828988 - Poslední aktualizace: 9. února 2004 - Revize: 1.4 Informace v tomto článku jsou určeny pro produkt:
Strojově přeložený článek Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum. Projděte si také anglickou verzi článku:828988
(http://support.microsoft.com/kb/828988/en-us/
)
|




Zpět nahoru








