我想将同步事件从工作线程发送到UI主线程.我如何在wxWidgets中执行此操作?链接到示例将非常有用
您应该使用QueueEvent(wxEvent*event)进行线程间通信.
void wxEvtHandler::QueueEvent(wxEvent* event)
wxDocumentation说明:
QueueEvent()可以用于从工作线程到主线程的线程间通信,它在内部使用锁定是安全的,并通过确保不使用事件对象来避免AddPendingEvent()文档中提到的问题通过调用线程了.应该注意避免使用该对象的某些字段,特别是事件对象的任何wxString成员都不能是另一个wxString对象的浅层副本,因为这会导致它们仍然在后台使用相同的字符串缓冲区.
你可以这样做:
wxCommandEvent* evt = new wxCommandEvent();
// NOT evt->SetString(str) as this would be a shallow copy
evt->SetString(str.c_str()); // make a deep copy
wxTheApp->QueueEvent( evt );
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助.
| 归档时间: |
|
| 查看次数: |
3976 次 |
| 最近记录: |