Я знаю, когда появится эта информация об ошибке. В с ++ / cx раньше это работало. Но в c ++ / winrt это проблема с маршалингом.
Я пытаюсь создать некоторые таймеры из моего метода init.
Метод инициализации:
void App::InitAsync()
{
concurrency::create_task([this]
{
//Do my stuffs
}).then([this](concurrency::task<void> task)
{
try
{
task.get();
}
catch (const std::exception& /*e*/)
{
}
m_timer = CreateAndStartDispatcherTimer(500ms, &App::OnTimerTick);
}, concurrency::task_continuation_context::use_default());
}
Метод создания таймера :
Windows::UI::Xaml::DispatcherTimer App::CreateAndStartDispatcherTimer(std::chrono::milliseconds interval, void(App::* onTick)(IInspectable sender, IInspectable e))
{
auto timer{ DispatcherTimer() }; // the exception is thrown from here
timer.Tick(EventHandler<IInspectable>(this, onTick));
timer.Interval(interval);
timer.Start();
return timer;
}
Пожалуйста, подскажите, как я могу заставить его работать. Для воспроизведения я загрузил решение здесь .