Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading wxwidgets和线程_Multithreading_Wxwidgets - Fatal编程技术网

Multithreading wxwidgets和线程

Multithreading wxwidgets和线程,multithreading,wxwidgets,Multithreading,Wxwidgets,在我的应用程序中,我运行wglGetCurrentDC()和wglGetCurrentContext()fromonThread函数 (此函数应按此处声明的方式调用-EVT\u线程(wxID\u ANY,MyCanvas::onThread)) 在这两种情况下,我都得到NULL。当我不是在阅读时运行它时,… 解决这个问题的方法是什么?(从线程获取事件时,我必须运行它们!) 正如Alex所建议的,我改为wxPostEvent将事件重定向到主线程,主线程在其onThread函数中捕获事件。在这个on

在我的应用程序中,我运行
wglGetCurrentDC()
wglGetCurrentContext()
from
onThread
函数 (此函数应按此处声明的方式调用-
EVT\u线程(wxID\u ANY,MyCanvas::onThread)
) 在这两种情况下,我都得到
NULL
。当我不是在阅读时运行它时,
…
解决这个问题的方法是什么?(从线程获取事件时,我必须运行它们!)


正如Alex所建议的,我改为
wxPostEvent
将事件重定向到主线程,主线程在其
onThread
函数中捕获事件。在这个
onThread
函数中,我有
wglGetCurrentDC()
wglGetCurrentContext()
调用……它们仍然返回null。请解释我做错了什么。以及如何解决问题。

不要从工作线程中接触任何与UI相关的内容。这是所有UI框架的一般要求。使用wxPostEvent将工作重定向到主应用程序线程。

也许我有误解,但您是否应该使用wxGLCanvas和wxGLContext,而不是windows特定的代码?至少它可能与其他wxWidget代码更兼容

无论如何,如果当前窗口的DC不存在,则从返回NULL。这意味着要么上下文被破坏了,要么你没有从你认为是从窗口调用它(可能是因为你的线程?)。我要重申亚历克斯所说的话;不要从主线程以外的任何线程调用UI代码


如果您可以发布一些代码来显示您是如何从线程返回的,那么它可能有助于识别问题。看起来你可能是从线程开始做UI的事情,只是没有意识到而已。(虽然看不到任何代码,但很难说。)

我按照您所说的进行了更改,并使用wxPostEvent将事件重定向到主线程,主线程在其onThread函数中捕获事件。在这个onThread函数中,我有wglGetCurrentDC()和wglGetCurrentContext()呼叫…仍然返回空。请解释我做错了什么。以及如何解决问题