关于在线程中更新ui的相关问题
#2010
Replies: 1 comment
-
RimeWithWeasel是算法服务内存里的,应用中的候选窗口是应用里的实例,这个之间是不同进程的。算法服务中的ui只用在tip显示showmessage |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
各位大佬大家好,我有一个问题想请教一下。在前端weasel中,我有一个任务需要比较长的时间才能把拼音翻译到汉字,因此我想在前端输入界面的候选词中添加提示正在推理的提示信息(比如,在candidate的第一个位置添加一个“正在翻译”,等翻译结束就把candidate的第一个位置替换成翻译后的中文字符串)。我的实现方法是修改RimeWithWeasel.cpp文件,建立一个全局子线程,在子线程中将第一个candidate强制替换成“正在翻译”,然后:
_Respond(ipc_id, eat);
_UpdateUI(ipc_id);
但是这样ui根本没有更新,我直接强制
m_ui->Update(weasel_context, weasel_status);
这样也没有更新
然后我换成了
Status& weasel_status = m_ui->status();
Context weasel_context;
RimeSessionId session_id = to_session_id(ipc_id);
_GetStatus(weasel_status, ipc_id, weasel_context);
_GetContext(weasel_context, session_id);
m_ui->Update(weasel_context, weasel_status);
并在get_context中替换cinfo达到替换候选词的目标,这样我的ui倒是更新了但是遇到了其他各种各样的问题,因此我判定上面的uiupdate方法是不合理的。
所以我在这里问一下各位大佬,weasel中uiupdate的正常流程是什么样的?
Beta Was this translation helpful? Give feedback.
All reactions