Visual studio code 从调试服务器以编程方式更新/刷新VSCode监视面板中的对象

Visual studio code 从调试服务器以编程方式更新/刷新VSCode监视面板中的对象,visual-studio-code,vscode-extensions,Visual Studio Code,Vscode Extensions,我为Roku的BrightScript语言维护一个VSCode调试器扩展。Roku没有正式的调试协议,因此我的调试器使用发出各种调试命令(如print variable、continue、step等)。由于Roku是一个网络设备,我们正在进行字符串解析,因此与调试机器程序(如node或C#)相比,每个命令都相当慢。因此,我们尽可能地延迟加载数据,而不是急切地加载数据 以这个对象为例: 业务={ 员工姓名:[“迈克尔”、“吉姆”、“潘”、“德怀特”], 名称:“Dunder Mifflin纸业公司

我为Roku的BrightScript语言维护一个VSCode调试器扩展。Roku没有正式的调试协议,因此我的调试器使用发出各种调试命令(如print variable、continue、step等)。由于Roku是一个网络设备,我们正在进行字符串解析,因此与调试机器程序(如node或C#)相比,每个命令都相当慢。因此,我们尽可能地延迟加载数据,而不是急切地加载数据

以这个对象为例:

业务={
员工姓名:[“迈克尔”、“吉姆”、“潘”、“德怀特”],
名称:“Dunder Mifflin纸业公司”
}
当用户将
业务
添加到监视面板时,vscode会为
“业务”
发出一个命令。在幕后,我运行telnet命令
print business
,该命令返回以下内容:

<Component: roAssociativeArray> =
{
    employeeNames: <Component: roArray>
    name: "Dunder Mifflin Paper Company"
}
此时,我想更新
employeeNames
type以显示数组计数,如下所示:

这是我将在调试扩展中更改的
DebugProtocol.Variable
,但当VSCode没有要求更新此变量时,我不知道如何将其发送到VSCode

//为了这个问题而硬编码……在实际代码中是动态的
var variableName=“business.employeeNames”
var arrayValues=getArrayValues(variableName);//[“迈克尔”、“吉姆”、“潘”、“德怀特”]
let变量:DebugProtocol.variable={
姓名:“雇员姓名”;
评估名称:“业务。员工名称”;
类型:`roArray(${arrayValues})`;
值:数组值;
儿童:[];
}
我试图欺骗vscode重新请求所有内容,但vscode没有请求新变量,因为它足够聪明,能够意识到
StoppedEvent
与以前停止的位置相同

//发送一个继续
this.sendEvent(新的ContinuedEvent(0,true));
//稍等片刻
设置超时(()=>{
//发送已停止的事件
this.sendEvent(新的StoppedEvent('exception',threadId,exception.message));
}, 10);
作为调试扩展的作者,如何从调试扩展代码告诉VSCode监视面板中的变量已更改,需要刷新

<Component: roArray> =
[
    "Michael"
    "Jim"
    "Pam"
    "Dwight"
]