PRB: Automatizace procesu křížek COM může zavěsit klientské aplikace na Windows 95 a 98

Překlady článku Překlady článku
ID článku: 216400 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Příznaky

Při automatizace serveru COM out-of-process z aplikace klienta, pokud kód klienta těsné smyčce nebo provede rozsáhlé požadavky pro získání nového rozhraní aplikace klienta může přestat reagovat během volání automatizace, vyžadování uživatele abnormálně ukončit proces. Jakmile neodpovídá, libovolný požadavek COM zahrnující zařazené rozhraní se nezdaří. Zrušte problému je třeba restartovat počítač.

Problému dochází pouze v systémech Windows 95 a Windows 98.

Příčina

Při rozhraní zařadit přes hranice procesu, počet objektů systému vytvořen zpracovávat komunikaci mezi procesy klienta a serveru. To zahrnuje proxy/stub, spolu s ID a potřebné k identifikaci právě zařadit rozhraní COM OXID. Při uvolnění rozhraní procesem klienta tyto objekty zničena během úklid.

Podle návrhu používá COM opožděných úklid uvolněte systémové prostředky, které již nejsou potřebné. Tato kolekce dochází během období nečinnosti relativní. Pokud klientská aplikace neposkytuje adekvátní volného času pro úklid dojít, je možné, bude systém nedostatek prostředků a již nebude možné zařazování rozhraní. V takovém případě samotné vrstvy COM. pravděpodobně poškozená, zabránění dále úklid, až po restartování systému.

Nejobvyklejší příčinou problému je, že kód klienta zadal těsné smyčky nebo velké období zahrnující hierarchie vnořených objektů automatizace provádí kde následné volání jsou prováděny získat, a uvolněte mnoho objektů out-of-process krátké časové období. Následující ukázkový kód například ukazuje hierarchii vnořený objekt, který vyžaduje tři rozhraní zařadit každém volána metoda vytisknout. Protože kód spuštěn v těsné smyčky, celkový počet rozhraní právě zařadit je 30:
   For i = 1 To 10
      oExcel.ActiveWorkbook.Sheets(i).UsedRange.PrintOut
   Next i
				
Windows 95 a Windows 98, celkový počet rozhraní lze zařadit najednou je přibližně 65 536.

Řešení

Vývojáři potřebují minimalizovat počet odkazů objekt požadavku během těsné smyčky nebo Tučná období automatizace. Pokud rozhraní je zapotřebí více než jednou, ji mají být uchovávány k a opakovaně používá spíše než vydané a reacquired několikrát za sebou.

Například tato upravená verze výše uvedené ukázkové provádí stejný úkol, ale vyžaduje pouze dvě rozhraní být zařazen pro každé volání vytisknout (Redukční 30 procent z kódu výše):
   Set oBook = oExcel.ActiveWorkbook
   For i = 1 To 10
      oBook.Sheets(i).UsedRange.PrintOut
   Next i
				
jiné možné řešení může být přesunout některé automatizace kód v proces serveru, pokud server umožňuje pro skriptování v procesu. Produkty Microsoft Office například začlenit VBA skriptování pro interní automatizace. Přesunutím kód smyčky do modulu VBA můžete předejít zařazování více rozhraní a místo toho vyvolat makro, které umožňuje serveru proveďte veškeré práce.

Odkazy

Další informace naleznete v následujícím článku databáze Microsoft Knowledge Base:
219905Postupy: Přidání dynamicky a spouštět makra VBA z jazyka

Vlastnosti

ID článku: 216400 - Poslední aktualizace: 24. ledna 2007 - Revize: 4.4
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Windows 95
  • Microsoft Windows 98 Standard Edition
  • Microsoft Windows Millennium Edition
Klíčová slova: 
kbmt kbautomation kboleapp kbprb KB216400 KbMtcs
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:216400

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com