C #: Como forçar a chamada de um método do thread principal sinalizando de alguma forma a partir de outro thread

Desculpe pelo título longo, eu não sei nem como expressar a pergunta

Estou usando uma biblioteca que executa um retorno de chamada de um contexto diferente do segmento principal (é uma biblioteca C), criei o retorno de chamada em c # e, quando for chamado, gostaria de apenas gerar um evento.

No entanto, como não sei o que haverá dentro do evento, gostaria de encontrar uma maneira de chamar o método sem o problema de bloqueios e assim por diante (caso contrário, o usuário de terceiros precisará lidar com isso dentro do evento, muito feio )

Existe alguma maneira de fazer isso? Posso estar totalmente no caminho errado, mas estou pensando na maneira winforms de lidar com diferentes segmentos (a coisa .Invoke)

Caso contrário, posso enviar uma mensagem para o loop de mensagens da janela, mas não sei muito sobre a passagem de mensagens e se posso enviar mensagens "personalizadas" como esta

Exemplo:

private uint lgLcdOnConfigureCB(int connection, System.IntPtr pContext)
{
    OnConfigure(EventArgs.Empty);
    return 0U;
}

esse retorno de chamada é chamado de outro programa que eu não tenho controle, eu gostaria de executar o método OnConfigure no thread principal (aquele que lida com o meu winform), como fazê-lo? Ou, em outras palavras, eu gostaria de executar o OnConfigure sem a necessidade de pensar em bloqueios

Editar 1:

Estou com um problema com esta exceção:

CallbackOnCollectedDelegate recuperado Mensagem: O retorno de chamada é executado no delegado 'G19dotNet! G19dotNet.LgLcd + lgLcdOnSoftButtonsCB :: Invoke' coletado no GarbageCollector. Durante o código não gerenciado, deve-se garantir que os delegados nunca serão excluídos até que você tenha certeza de que eles nunca serão chamados

Edição 2:

Problema resolvido por mim mesmo, graças ao Stackoverflow, que sempre me ajuda! Para referência futura:Definindo um delegado como um ponteiro de função

questionAnswers(3)

yourAnswerToTheQuestion