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

}

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

この Sleep(X) 条件で 10 ミリ秒を超える状態で実行すると動作しますが、そのスリープ呼び出しがないと例外がスローされます ....

例外がスローされる理由と、何が間違っているか、または欠落しているかを誰かが知っていますか?

4

0 に答える 0