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