Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

[C#] melding RPC_E_CALL_REJECTED na maanden *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik heb op dit moment het volgende probleem. Ik heb een C# applicatie die maanden lang prima
heeft gedraaid op een XP systeem (zonder netwerk) die gebruikt maakt van Powerpoint. Echter opeens is er een probleem ontstaan dat zich naar een paar minuten na het opstarten al voordoet. De gebruiker hoeft hiervoor
niks te doen.

Het probleem veroorzaakt een een foutmelding: RPC_E_CALL_REJECTED

(Rest van de foutmelding volgt nog).

Nu ben ik opzoek gegaan naar deze error op Google/MSDN etc.etc. Nu blijkt dit niet een echt unieke foutmelding te zijn. Maar ik kan ook niet echt de theorie vinden achter deze foutmelding. Dus wanneer wordt zoiets gemeld, en kan ik bij deze foutmelding gewoon een bepaalde aanroep NOG een keer doen ? (Dit is namelijk wat ik ergens in een stukje code zag).

Enfin, zijn er mensen die wat meer info hebben over dit specifieke probleem, of wellicht een theorie hebben hoe dit probleem onstaan kan zijn na een aantal maanden.

De PC is gechecked op geheugen, hardeschijf etc. Kortom, hopenlijk zijn er mensen met goede idee-en. Ik hoop zelf vanavond, na een gedegen debugsessie, meer feiten te hebben.

Groetjes,
Jodocus.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik mis toch nog wel een boel informatie: je zegt dat de gebruiker niets hoeft te doen, maar loopt er misschien een timer ofzo in die applicatie? Worden er instances van PP (dubbel?) opgestart? Wat doet die applicatie met PP? En, lomp wellicht, helpt een herinstallatie van de app danwel PP niet gewoon? Heb je al eens gekeken naar recente windows of office updates en die eventueel verwijderd? Wat heb je nog meer gedaan om het probleem te lokaliseren? Al eens met een debugger gekeken?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Zo ben ik weer...klopt nog erg weinig info. Ik heb nu de hele opstelling meegenomen zodat ik eens kan debuggen.
Even wat achtergrond info. Het is een vrij simpele app. Er zijn twee schermen aangesloten. Scherm1 is een touchscreen waar een gebruiker simpelweg op een 'button' kan drukken waarna op monitor2 er een PP slideshow wordt afgespeeld.

De regelcode waar hij over valt is:

<...>
if (view.State == Microsoft.Office.Interop.Powerpoint.PpSlideSHowState.ppSlideShowDone)
<...>

Overigens onstaat dit probleem als de presentatie is afgelopen. Als ik kijk in de stacktrace zie ik staan dat hij bij het opvragen naar de 'State' hij een 'get_State()' doet. De hele regels is:

Microsoft.Office.Interop.Powerpoint.SlideShowView.get_State()

Overigens wordt deze call gedaan in een OnTick event van een timer, maw wellicht niet zo'n slimme constructie ?!?!?!

Hmmm, zou ik wellicht beter een Delegate kunnen toepassen hier ?

Maar sowieso...waarom onstaat dit probleem opeens na MAANDEN van geen enkel probleem ?!!?!?

Overigens wil ik niet 'gewoon' een herinstallatie doen, wellicht dat het probleem inderdaad zomaar weg gaat....maar dat vind ik al HELEMAAL eng. Ik moet gewoon weten waarom het fout gaat.

Goed heb nu een kleiner stukje code die ook foutgaat:

<...zet hier alles goed, laad powerpoint etc.>
view = p.SlideShowSettings.Run().View
while (view.State != Microsoft.Office.Interop.Powerpoint.PpSlideSHowState.ppSlideShowDone);

<...>

Nu krijg ik dus een exception. op dit moment is het een 'Object does not exist' exception....das toch wel ERG raar.

Wat ik doe staat in principe hier beschreven:

http://www.microsoft.com/...qanda/sept06/hey0905.mspx

[ Voor 43% gewijzigd door Verwijderd op 26-09-2008 23:46 ]


Verwijderd

Topicstarter
Het lijkt opgelost te zijn.

Het blijkt dat wanneer de presentatie is afgelopen deze automatisch wordt gesloten. Het is daarna natuurlijk niet meer mogelijk om de status op te vragen van de presentatie ! Dat is logisch.

Ik vang nu simpel weg een EndPresentation event af zodat ik weet wanneer de presentatie is afgelopen.

Het rare blijft natuurlijk WEL dat dit eerst zonder problemen maanden heeft gewerkt en nu opeens zo raar doet.
Enfin, ik denk dat de nieuwe implementatie betrouwbaarder is, dus ik ga er vanuit dat dit probleem niet terug komt.

Mocht iemand nog een idee hebben waarom zoiets het naar maanden niet meer doet dan hou ik mee aanbevolen.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zaterdag 27 september 2008 @ 09:53:
Mocht iemand nog een idee hebben waarom zoiets het naar maanden niet meer doet dan hou ik mee aanbevolen.
RobIII schreef op vrijdag 26 september 2008 @ 16:24:
Heb je al eens gekeken naar recente windows of office updates en die eventueel verwijderd?

[ Voor 35% gewijzigd door RobIII op 27-09-2008 10:48 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Verwijderd schreef op vrijdag 26 september 2008 @ 16:15:
of wellicht een theorie hebben hoe dit probleem onstaan kan zijn na een aantal maanden.
In dit soort gevallen is de theorie altijd: er is wel degelijk iets veranderd, alleen weet je nog niet wat. ;)

Wie trösten wir uns, die Mörder aller Mörder?


  • DigiK-oz
  • Registratie: December 2001
  • Laatst online: 15-11 13:31
Aangezien je de state in een timer opvroeg, kan het zo zijn dat de presentatie gewijzigd is recent? Met de eerste presentatie liep de timer af terwijl de slideshow was afgelopen, maar nog niet daadwerkelijk gesloten. Met de nieuwe presentatie (die net iets korter is?) loopt de timer af wanneer de presentatie al gesloten is.

Maar je huidige implementatie is wat dat betreft natuurlijk veel robuuster.

Whatever

Pagina: 1