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.