Как использовать C # BackgroundWorker, чтобы сообщить о прогрессе в собственном коде C ++?

В моем решении Visual Studio у меня есть интерфейс, реализованный на C #, и некоторый код, реализованный на родном C ++.

я используюBackgroundWorker класс реализовать отчет о ходе выполнения длительной операции.

Как я могу использоватьBackgroundWorker сообщить о прогрессе из моего родного кода C ++?

Другими словами, как я могу переписать код C # ниже в нативный C ++ и вызвать полученный код C ++ из C #? Если невозможно напрямую переписать приведенный ниже код, было бы полезно узнать о других эквивалентных решениях. Благодарю.

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");
        }
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос