我想从 WorkerThread 更新 GUI 线程中的一些 GUI 元素。GUI (Class MainPage) 指定一个委托函数,如下所示。
HRESULT MainPage::delegateUpdateGUI(IXRDependencyObject* pSender, XREventArgs* pArgs) {
Mutex.lock();
...
Mutex.lock();
Sleep(20);
this-> m_textbox->SetText(counter_string);
}
代表 ptr 在外部声明
IXRDelegate<XREventArgs, IXRDependencyObject> *m_delegateFunction;
并在 MainPage::OnLoaded 方法中加载:
m_delegateFunction = CreateDelegate(this, &MainPage::delegateUpdateGUI);
在我的 WorkerThread 中:
...
DWORD WINAPI WorkerProc(LPVOID pParam) {
Mutext.Lock();
Counter++;
...
Mutex.unlock(),
m_delegateFunction->Invoke(myMainPage, NULL);
Sleep(20);
}
当我在大于 10 毫秒的睡眠(X)条件下运行它时,它正在工作,但没有睡眠调用会抛出异常......
有谁知道为什么抛出异常以及什么是错误的或丢失的?