相关问题
#鸿蒙通关秘籍#如何跨线程传递鸿蒙系统中的PixelMap对象?
897浏览 • 1回复 待解决
#鸿蒙通关秘籍#在ArkTS中如何实现SharedArrayBuffer对象的跨线程共享?
1185浏览 • 1回复 待解决
#鸿蒙通关秘籍#在鸿蒙中如何使用转移模式的NativeBinding对象进行跨线程通信?
1285浏览 • 1回复 待解决
#鸿蒙通关秘籍#在鸿蒙开发中如何使用共享模式的NativeBinding对象进行跨线程通信?
1042浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何利用Native线程安全函数实现鸿蒙跨线程调用?
1036浏览 • 1回复 待解决
#鸿蒙通关秘籍#在鸿蒙中如何使用N-API实现线程安全的跨线程函数调用?
1166浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用@Provide和@Consume实现ArkTS中的跨层级参数传递?
892浏览 • 1回复 待解决
#鸿蒙通关秘籍#使用ArkTS实现跨线程任务调度
985浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中利用Navigation实现对象传递?
1065浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中实现页面跳转时传递类对象?
1148浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙开发中如何实现跨包路由?
855浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在不同线程中操作鸿蒙共享模块中的对象?
1053浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何实现鸿蒙开发中的线程间通信?
938浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中通过转移方式传递ArrayBuffer对象?
995浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在C/C++与ArkTS之间进行错误对象的跨语言传递?
834浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何实现鸿蒙应用中组件的跨文件样式复用?
985浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙开发中如何避免线程间数据传递引发的内存泄漏?
970浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中实现跨设备拖拽功能?
1063浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在Navigation中实现跨包路由?
946浏览 • 1回复 待解决
#鸿蒙通关秘籍#应用接续中的跨端迁移操作如何实现?
876浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙导航组件中实现跨包动态路由?
959浏览 • 1回复 待解决
复杂JS类对象是否可以支持跨线程共享传递?
1386浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙IPC中实现远端对象消亡通知?
714浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中实现跨文件样式复用?
847浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中实现跨文件样式的复用?
1117浏览 • 1回复 待解决
普通对象在跨线程传递时通过拷贝的形式实现。线程收到的对象内容与发送的对象内容一致,但每个对象指向各自线程的隔离内存区。例如JavaScript的标准对象如
Object
、Array
、Map
等就是通过这种方式实现跨线程通信。typescript // Test.ets export class TestA { constructor(name: string) { this.name = name; } name: string = 'ClassA'; }
// Index.ets import { taskpool } from '@kit.ArkTS'; import { BusinessError } from '@kit.BasicServicesKit'; import { TestA } from './Test';
@Concurrent async function test1(arg: TestA) { console.info("TestA name is: " + arg.name); }
@Entry @Component struct Index { @State message: string = 'Hello World';
build() { RelativeContainer() { Text(this.message) .id('HelloWorld') .fontSize(50) .fontWeight(FontWeight.Bold) .alignRules({ center: { anchor: 'container', align: VerticalAlign.Center }, middle: { anchor: 'container', align: HorizontalAlign.Center } }) .onClick(() => { let objA = new TestA("TestA"); let task = new taskpool.Task(test1, objA); taskpool.execute(task).then(() => { console.info("taskpool: execute task success!"); }).catch((e:BusinessError) => { console.error(
taskpool: execute task: Code: ${e.code}, message: ${e.message}
); }) }) } .height('100%') .width('100%') } }