Как использовать 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");
}
}
}