Teď jste offline a čekáte, až se znova připojí internet.

PRB: Synchronizace OLE volání se nezdaří v Inter, Process/vlákno SendMessage

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:131056
Příznaky
Synchronní volání OLE provedené příjemce SendMessage inter-process/mimo podproces se nezdaří s RPC_E_CANTCALLOUT_ININPUTSYNCCALL(0x8001010D).
Příčina
Příčinou je popsána v podrobných informací v části "Další informace" tohoto článku.
Řešení
Místo inter process/inter thread SendMessage použít PostMessage.
Prohlášení
Toto chování je záměrné.
Další informace
Viz začátku Kapitola 13 v OLE 2 Programmer's Reference svazku 1 pro kategorie volání OLE. Pochopení těchto kategorií je třeba v tomto článku.

Většina volání OLE jsou synchronní volání. Synchronní volání jiný proces výnosy tohoto procesu a čeká na odpověď od tohoto procesu. Kromě toho má OLE synchronizovány vstup volání, která se vztahují k rozhraní inplace aktivace. Synchronizovat vstup volání jsou implementovány pomocí inter process/inter thread SendMessage.

16bitový systém Windows neumožňuje úkol výnos při v inter proces/inter-thread SendMessage, protože může dojít k zablokování systému. K zablokování dochází, protože zpráva pro odesílatele může být uložen v horní části sdílené systémové fronty a tím se zabrání další úkoly, včetně příjemce SendMessage, jejich zprávy načítání ze systémové fronty, dokud odesílatele ani. Odesílatel nelze načíst své zprávy, protože čeká inter process/inter thread SendMessage vrátíte.

V systému Windows 32-bit každý proces má vlastní frontu systému a tato architektura obvykle zabrání zablokování potíže vyskytující. Však po jednoho procesu je aktivní buňce v okně jiným procesem, systémové fronty dva procesy synchronizovány jako v oknech 16 bitů, tak může dojít k zablokování. Chcete-li tomu zabránit, zastaví OLE synchronní volání OLE z prováděny při volající příjemce pozvání synchronizovány vstup.

OLE Určuje, zda volající synchronního volání je příjemce pozvání synchronizovány vstup pomocí rozhraní API InSendMessage(). Tato kontrola široké zabraňuje synchronního volání z prováděny, pokud se volající momentálně příjemce jakékoli inter process/inter thread SendMessage.
2.0 2,00 Podprocesu

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 131056 - Poslední kontrola: 07/11/2005 18:39:08 - Revize: 2.2

Microsoft Platform Software Development Kit-January 2000 Edition

  • kbmt kbprb KB131056 KbMtcs
Váš názor
html> Asimov.clickstreamTracker.init(); >/html>