1

我想从 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)条件下运行它时,它正在工作,但没有睡眠调用会抛出异常......

有谁知道为什么抛出异常以及什么是错误的或丢失的?

4

0 回答 0