KeelsDeviceManager 在构造时通过 setInterval() 启动设备轮询,但没有保存定时器句柄,也没有在扩展停用时停止轮询。同时,KeelsDeviceManager 未加入 ExtensionContext.subscriptions,其 dispose() 不会由 VS Code 自动调用。
KeelsDeviceManager
setInterval()
ExtensionContext.subscriptions
dispose()
该问题与具体 CJMP 工程功能无关,只要插件被激活并创建 KeelsDeviceManager,设备轮询就会启动。若扩展停用但 Extension Host 进程仍在运行,轮询任务可能继续执行并持有相关对象。
clearInterval()
startPolling()
main
问题描述(必填)
KeelsDeviceManager在构造时通过setInterval()启动设备轮询,但没有保存定时器句柄,也没有在扩展停用时停止轮询。同时,KeelsDeviceManager未加入ExtensionContext.subscriptions,其dispose()不会由 VS Code 自动调用。该问题与具体 CJMP 工程功能无关,只要插件被激活并创建
KeelsDeviceManager,设备轮询就会启动。若扩展停用但 Extension Host 进程仍在运行,轮询任务可能继续执行并持有相关对象。复现步骤(必填)
KeelsDeviceManager,并每 10 秒执行一次设备轮询。setInterval()的返回值,也未调用clearInterval()。期望结果(必填)
KeelsDeviceManager保存设备轮询定时器句柄。KeelsDeviceManager加入ExtensionContext.subscriptions。dispose(),并通过clearInterval()停止设备轮询。实际结果/日志(可选)
startPolling()直接调用setInterval(),返回值被丢弃。dispose()只释放状态栏,没有停止设备轮询。KeelsDeviceManager未注册到扩展订阅列表。环境信息(可选)
main