当前位置: 技术问答>linux和unix
如何在工作线程中调用图形界面线程的成员函数(串口通信)?
来源: 互联网 发布时间:2016-02-01
本文导语: 如题,我在form1。cpp中做好了串口通信的界面和功能,然后另外开了一个线程thread来不断的调用form1.cpp中的成员函数readdata(),readdata()的作用是从串口读数据,在thread中用一个死循环不断的调用readdata(),类似于 while(1) { re...
如题,我在form1。cpp中做好了串口通信的界面和功能,然后另外开了一个线程thread来不断的调用form1.cpp中的成员函数readdata(),readdata()的作用是从串口读数据,在thread中用一个死循环不断的调用readdata(),类似于
while(1)
{
readdata()}
,但是编译出来显示错误,readdata()未定义,所以改为
Form1 a;
while(1)
{
a.readdata()
}
但是还是不行,请问是什么原因?是要加延时吗?还是工作线程thread不能调用图形线程的成员函数啊?
while(1)
{
readdata()}
,但是编译出来显示错误,readdata()未定义,所以改为
Form1 a;
while(1)
{
a.readdata()
}
但是还是不行,请问是什么原因?是要加延时吗?还是工作线程thread不能调用图形线程的成员函数啊?
|
你可以声明一个form1的全局指针,然后在线程中通过该指针调用form1中的函数!
|
在线程中使用图形界面函数,比如gtk之类的函数,都需要在调用之前加
gdk_threads_enter();
调用完后加上
gdk_threads_leave();
还要线程初始化 g_thread_init(NULL);
gdk_threads_init();
gdk_threads_enter();
调用完后加上
gdk_threads_leave();
还要线程初始化 g_thread_init(NULL);
gdk_threads_init();
|
thread不能调用成员函数.