多线程更新UI的主要问题在于子线程访问UI控件时可能会与UI线程冲突,同时访问该控件,导致出现无法预料的错误。
从而大多都是采用消息的方式来避免这个问题,但是这种方式太过麻烦,需要制定各种消息协议之外,还需要重写UI的消息处理函数,且可复用性极低。那么可不可以采用重载paint函数,在里面加锁的方式来实现呢?例如:
UI界面:
void onPaint()
{
lock();
Base::onPaint();
unlock();
}
多线程中
ui.lock();
ui->lb->text = "...";
ui.unlock();
或者有更好的方法?
@LH_Mouse_Ex @幻の上帝 @sunchy12345678
从而大多都是采用消息的方式来避免这个问题,但是这种方式太过麻烦,需要制定各种消息协议之外,还需要重写UI的消息处理函数,且可复用性极低。那么可不可以采用重载paint函数,在里面加锁的方式来实现呢?例如:
UI界面:
void onPaint()
{
lock();
Base::onPaint();
unlock();
}
多线程中
ui.lock();
ui->lb->text = "...";
ui.unlock();
或者有更好的方法?
@LH_Mouse_Ex @幻の上帝 @sunchy12345678


