Jak używać C # BackgroundWorker do zgłaszania postępu w natywnym kodzie C ++?

W moim rozwiązaniu Visual Studio mam interfejs użytkownika zaimplementowany w C # i jakiś kod zaimplementowany w natywnym C ++.

używamKlasa BackgroundWorker do wykonania raportowania postępu wykonania długiej operacji.

Jak mogę korzystaćBackgroundWorker zgłosić postęp z mojego rodzimego kodu C ++?

Innymi słowy, jak mogę przepisać poniższy kod C # na natywny C ++ i wywołać kod C ++ z C #? Jeśli nie można przepisać bezpośrednio poniższego kodu, dobrze byłoby wiedzieć o innych równoważnych rozwiązaniach. Dzięki.

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