Marshal.CleanupUnusedObjectsInCurrentContext Método

Definição

Notifica o tempo de execução para limpar todos os Wrappers Chamáveis em Tempo de Execução (RCWs) alocados no contexto atual.

public:
 static void CleanupUnusedObjectsInCurrentContext();
[System.Security.SecurityCritical]
public static void CleanupUnusedObjectsInCurrentContext();
public static void CleanupUnusedObjectsInCurrentContext();
[<System.Security.SecurityCritical>]
static member CleanupUnusedObjectsInCurrentContext : unit -> unit
static member CleanupUnusedObjectsInCurrentContext : unit -> unit
Public Shared Sub CleanupUnusedObjectsInCurrentContext ()
Atributos

Observações

O sistema de interoperabilidade bombeia mensagens enquanto tenta limpar os RCWs. Isto garante que a limpeza para RCWs de apartamentos de thread única (STA) ocorre em todas as aplicações, incluindo aquelas que não bombeiam com frequência suficiente. No entanto, algumas aplicações que bombeiam adequadamente são muito sensíveis ao local onde a bombeagem ocorre. Quando o sistema de interoperabilidade transmite mensagens nestas aplicações, em locais inesperados, , a aplicação pode deparar-se com problemas de reentrância difíceis de diagnosticar. Por isso, as aplicações precisam de ser capazes de controlar a sua própria bombagem para um STA específico e controlar a limpeza dos RCWs.

No entanto, os programadores muitas vezes controlam apenas um subconjunto dos threads na sua aplicação e, por isso, não podem garantir que todos os threads estão a bombear corretamente.

Para resolver este problema:

  1. Use o Thread.DisableComObjectEagerCleanup método para desativar a limpeza automática dos RCWs e o bombeamento de mensagens que ocorre, por thread. Isto permite aos programadores optar por não usar a limpeza automática e o correspondente bombeamento de mensagens.

  2. Use o CleanupUnusedObjectsInCurrentContext método para notificar o tempo de execução para limpar todos os RCWs alocados no contexto atual. Este método complementar permite aos programadores controlar precisamente quando o runtime realiza a limpeza no contexto atual.

Aplica-se a