HarmonyOS ArkTs-taskpool切换主线程问题
想要封装一个方法,在工作线程调用可以切换回主线程去执行指定方法。目前使用taskpool去实现,想通过taskpool的onReceiveData和sendData来实现上述需求,在实现过程中报function不能序列化的问题。
目前问题:
1.上述思路是否可行,是api使用出了问题吗?
2.是否有其他推荐的方式去完成这个需求?
代码:
// Utils.ets
/**
 * 切换至主线程执行
 *
 * @param func 待执行方法
 * @param args 参数
 */
public static async runOnUiThread(func?: Function, ...args: Object[]) {
  // 这里构建了一个task,只用来sendData
  let uiTask = new taskpool.Task((...args: Object[]) => {
    taskpool.Task.sendData(...args);
  });
  // 设置回调函数func
  uiTask.onReceiveData(func);
  await taskpool.execute(uiTask);
}
// Demo.ets
// 这个方法我前面用taskpool调度,让它运行在工作线程了;
// 在这里调Utils.runOnUiThread,想测试方法是否可行
@Concurrent
function testRunOnUiThread() {
  console.info('testRunOnUiThread: current tid = ' + process.tid);
  // runOnUiTTT方法中只有一条console,输出内容拼接了一下'sss'
  Utils.runOnUiThread(runOnUiTTT, 'sss');
}
public static runOnUiTTT(info: string) {
  console.info('runOnUiTTT:  ' + info + '  ' + process.tid);
}
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 HarmonyOS主线程子线程切换问题 
2105浏览  • 1回复 待解决
TaskPool子线程和主线程如何通信 
3719浏览  • 1回复 待解决
TaskPool如何跟主线程进行通信 
1695浏览  • 1回复 待解决
HarmonyOS 其他线程切换到主线程的api 
1576浏览  • 1回复 待解决
HarmonyOS  ArkTS怎么控制子线程回到主线程 
2234浏览  • 1回复 待解决
在ArkTS的主线程中使用await会堵塞主线程吗 
3393浏览  • 1回复 待解决
#鸿蒙通关秘籍#线程模型中,主线程和TaskPool Worker线程有啥区别? 
1451浏览  • 1回复 待解决
HarmonyOS  线程切换问题 
1561浏览  • 1回复 待解决
HarmonyOS Worker 与主线程通信问题 
1311浏览  • 1回复 待解决
HarmonyOS taskpool线程并发问题 
1135浏览  • 1回复 待解决
HarmonyOS taskpool线程池数量问题 
1633浏览  • 1回复 待解决
HarmonyOS emitter 线程切换问题 
1573浏览  • 1回复 待解决
当切换到子线程之后如何判断是否为主线程? 
1489浏览  • 1回复 待解决
HarmonyOS Worker主线程和子线程共享对象问题 
1367浏览  • 1回复 待解决
HarmonyOS TaskPool子线程单例问题 
1476浏览  • 1回复 待解决
HarmonyOS taskPool执行的task内如何回调主线程的方法 
1955浏览  • 1回复 待解决
HarmonyOS taskPool线程池task入参问题 
1421浏览  • 1回复 待解决
Worker的宿主线程必须是主线程吗? 
1468浏览  • 1回复 待解决
HarmonyOS taskpool.Task 线程安全问题 
1284浏览  • 1回复 待解决
HarmonyOS  并发任务子线程之间、子线程与主线程内容不共享问题 
1540浏览  • 1回复 待解决
HarmonyOS 主线程刷新UI 
1620浏览  • 1回复 待解决
HarmonyOS 大量数据处理导致主线程阻塞问题 
1081浏览  • 1回复 待解决
HarmonyOS 监听前后台切换能在taskpool开启的线程中监听吗? 
1105浏览  • 1回复 待解决
HarmonyOS中UI必须在主线程渲染吗? 如何判断当前线程是否为主线程? 
3348浏览  • 1回复 待解决
HarmonyOS ArkTS开发中,异步回调,怎么切到主线程执行呢 
2403浏览  • 1回复 待解决





















new TaskPool.task的函数必须使用@Concurrent装饰器装饰,可参考文档的参数说明,添加装饰器:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-taskpool-V5#constructor