Como usar o C # BackgroundWorker para relatar o progresso no código C ++ nativo?

Na minha solução Visual Studio eu tenho interface do usuário implementada em C # e algum código implementado em C ++ nativo.

eu usoClasse BackgroundWorker para implementar o progresso da execução da operação longa.

Como posso usarBackgroundWorker relatar o progresso do meu código C ++ nativo?

Em outras palavras, como posso reescrever o código C # abaixo para o C ++ nativo e chamar o código C ++ obtido do C #? Se não for possível reescrever o código abaixo diretamente, pode ser bom saber sobre outras soluções equivalentes. Obrigado.

class MyClass 
{
    public void Calculate(object sender, DoWorkEventArgs e)
    {
        BackgroundWorker worker = sender as BackgroundWorker;

        for (int i = 0; i < StepCount; i++)
        {
            if (worker.CancellationPending)
            {
                e.Cancel = true;
                break;
            }

            // code which handles current iteration here

            worker.ReportProgress((i + 1) * 100 / StepCount, 
                "Report progress message");
        }
    }
}

questionAnswers(2)

yourAnswerToTheQuestion