Dela via


disconnectedContext MDA

Kommentar

Den här artikeln är specifik för .NET Framework. Det gäller inte för nyare implementeringar av .NET, inklusive .NET 6 och senare versioner.

Den disconnectedContext hanterade felsökningsassistenten (MDA) aktiveras när CLR försöker övergå till en frånkopplad lägenhet eller kontext när en begäran om ett COM-objekt hanteras.

Symtom

Anrop som görs på en Runtime Callable Wrapper (RCW) levereras till den underliggande COM-komponenten i den aktuella lägenheten eller kontexten i stället för den där de finns. Detta kan orsaka skada och dataförlust om COM-komponenten inte är flertrådad, som när det gäller sta-komponenter (single-threaded apartment). Om RCW i sig själv är en proxy kan anropet också leda till att en COMException med HRESULT-RPC_E_WRONG_THREAD genereras.

Orsak

OLE-lägenheten eller kontexten har stängts av när CLR försöker övergå till den. Detta orsakas oftast av att STA-lägenheter stängs av innan alla COM-komponenter som ägs av lägenheten släpptes helt Detta kan inträffa som ett resultat av ett explicit anrop från användarkod på en RCW eller medan SJÄLVA CLR manipulerar COM-komponenten, till exempel när CLR släpper COM-komponenten när den associerade RCW har skräp samlats in.

Åtgärd

Undvik det här problemet genom att se till att tråden som äger STA inte avslutas innan programmet har slutförts med alla objekt som finns i lägenheten. Samma sak gäller för kontexter. se till att kontexter inte stängs av innan programmet är helt klart med alla COM-komponenter som finns i kontexten.

Effekt på körningen

Denna MDA har ingen effekt på CLR. Den rapporterar endast data om den frånkopplade kontexten.

Output

Rapporterar kontextcookien för den frånkopplade lägenheten eller kontexten.

Konfiguration

<mdaConfig>
  <assistants>
    <disconnectedContext />
  </assistants>
</mdaConfig>

Se även