gyakorlati útmutató

Ha programozott hívja a Visual Studio kívülről (az eljáráson kívül) A többszálú alkalmazást, az alábbi hibák léphetnek fel.

Az alkalmazás foglalt (RPC_E_CALL_REJECTED 0x80010001).

A hívást elutasítják (RPC_E_SERVERCALL_RETRYLATER 0x8001010A).

Ezek a hibák fordulnak elő, mert a konfliktus a patakok többszálas alkalmazások és a Visual Studio. Ezeket a hibákat el lehet kerülni végrehajtási rakodók IOleMessageFilter események a Visual Studio automatizálási alkalmazás. (Nem tévesztendő össze IOleMessageFilter System.Windows.Forms.IMessageFilter.)

hibaelhárítás

Vegye fel a következő osztályba az alkalmazásban.

Add a COM hivatkozás a fejlesztési környezet "Microsoft Development Environment 8.0". Ebben az esetben a megoldás lesz hozzá hivatkozásokat EnvDTE és EnvDTE80.

Add utalás System.Windows.Forms.

A kód, hozzon létre egy példány EnvDTE80, ahogy az a következő példa.

Hívjon Message.Register feldolgozására hiba.

Hívjon az automatizálási kódot a szokásos módon.

Ha az automatika kód kész, hívja Message.Revoke eltávolítani hibakezelő patakok.

Ha a hívás iránya kívülről, többszálú alkalmazás Visual Studio, átjut a COM interfészen keresztül. A COM néha sikerül a megfelelő kezelést patakok, különösen az időben. Ennek eredményeként, néha beiépőáramát a külső alkalmazás nem lehet feldolgozni a Visual Studio pillanatában készítmény, ami hibákhoz fent leírtak szerint. Azonban a hibák nem jelentkeznek, ha a hívás az alkalmazás fut a Visual Studio (folyamatban), mint például a makró vagy a felépítmény. Egy részletesebb leírás a hiba okának lásd. Szakasz Flow Support Office.

A hibák elkerülése végre IOleMessageFilter függvényt az alkalmazásban. Ebben az esetben, ha az áramlás a külső alkalmazás elküldi a hívást a Visual Studio és ezután deformálódik (azaz ettől IOleMessageFilter.HandleIncomingCall módszer visszaadja SERVERCALL_RETRYLATER), az alkalmazás képes lesz kezelni, és próbálja újra, vagy törölheti a hívást. Ehhez hozzon létre egy új szálat a Visual Studio alkalmazások egységes szálon egység (STA), és csatolja az automatizálási kódot IOleMessageFilter kezelő.

hozzátéve közösség

Műsor: öröklött Védett

Volt ez az oldal hasznos? Igen Nem

1500 karakter van még hátra

Köszönjük! Köszönöm a véleményt. Az Ön véleménye nagyon fontos számunkra.

fejlesztési központok

közösség

Lépjen kapcsolatba velünk

Kapcsolódó cikkek