pywpsrpc icon indicating copy to clipboard operation
pywpsrpc copied to clipboard

强杀excel进程,再通过rpc调起wps进程,返回还是老对象,操作这个对象崩溃

Open guohailin0323 opened this issue 2 years ago • 7 comments
trafficstars

   代码示例:
    hr, rpc_excel = createEtRpcInstance()
    hr, app_excel = rpc_excel.getEtApplication()
    
    # 强杀excel进程
    processName = "et"
    kill_process(processName)
    
    hr, rpc_excel1 = createEtRpcInstance()
    hr, app_excel2 = rpc_excel1.getEtApplication()
    # 返回的rpc_excel1、app_excel2还是老对象,下面这行代码必崩!!!!!!!
    app_excel2.Visible = False
    
    我猜测哪个地方有缓存
    
    
    问题二:
    createEtRpcInstance getEtApplication源码在哪里能看到
   
   【环境】 
    pywpsrpc:v2.3.9
   信创amd64
   wps:v11.1.0.11704

guohailin0323 avatar Nov 10 '23 02:11 guohailin0323

官方的c++ sdk就是这样子的,内部估计是有个静态变量,只能用一次

timxx avatar Nov 10 '23 14:11 timxx

官方的c++ sdk就是这样子的,内部估计是有个静态变量,只能用一次

即使有静态变量,强杀进程后,也不存在了。 再次调用接口createEtRpcInstance、getEtApplication返回是新对象才对,返回老的理解不了。 除非强杀进程时,少杀进程了。

guohailin0323 avatar Nov 20 '23 02:11 guohailin0323

官方的c++ sdk就是这样子的,内部估计是有个静态变量,只能用一次

即使有静态变量,强杀进程后,也不存在了。 再次调用接口createEtRpcInstance、getEtApplication返回是新对象才对,返回老的理解不了。 除非强杀进程时,少杀进程了。

变量是在sdk模块的吧,这个不是wps进程加载的(python这边) 不过可以研究研究这个模块能不能卸载重新加载,估计不太好整,现在都是sip那边自动做的

timxx avatar Nov 20 '23 04:11 timxx

   代码示例:
    hr, rpc_excel = createEtRpcInstance()
    hr, app_excel = rpc_excel.getEtApplication()
    
    # 强杀excel进程
    processName = "et"
    kill_process(processName)
    
    hr, rpc_excel1 = createEtRpcInstance()
    hr, app_excel2 = rpc_excel1.getEtApplication()
    # 返回的rpc_excel1、app_excel2还是老对象,下面这行代码必崩!!!!!!!
    app_excel2.Visible = False
    
    我猜测哪个地方有缓存
    
    
    问题二:
    createEtRpcInstance getEtApplication源码在哪里能看到
   
   【环境】 
    pywpsrpc:v2.3.9
   信创amd64
   wps:v11.1.0.11704

kill进程之后,需要把你的rpc_excel、app_excel对象回收后再去新建才行的

mjTree avatar Dec 04 '23 09:12 mjTree

   代码示例:
    hr, rpc_excel = createEtRpcInstance()
    hr, app_excel = rpc_excel.getEtApplication()
    
    # 强杀excel进程
    processName = "et"
    kill_process(processName)
    
    hr, rpc_excel1 = createEtRpcInstance()
    hr, app_excel2 = rpc_excel1.getEtApplication()
    # 返回的rpc_excel1、app_excel2还是老对象,下面这行代码必崩!!!!!!!
    app_excel2.Visible = False
    
    我猜测哪个地方有缓存
    
    
    问题二:
    createEtRpcInstance getEtApplication源码在哪里能看到
   
   【环境】 
    pywpsrpc:v2.3.9
   信创amd64
   wps:v11.1.0.11704

kill进程之后,需要把你的rpc_excel、app_excel对象回收后再去新建才行的

试了下,是可以的

guohailin0323 avatar Dec 06 '23 08:12 guohailin0323

我之前也遇到过类似问题,del app_excel 后就行了

wenfer avatar Apr 29 '24 06:04 wenfer

   代码示例:
    hr, rpc_excel = createEtRpcInstance()
    hr, app_excel = rpc_excel.getEtApplication()
    
    # 强杀excel进程
    processName = "et"
    kill_process(processName)
    
    hr, rpc_excel1 = createEtRpcInstance()
    hr, app_excel2 = rpc_excel1.getEtApplication()
    # 返回的rpc_excel1、app_excel2还是老对象,下面这行代码必崩!!!!!!!
    app_excel2.Visible = False
    
    我猜测哪个地方有缓存
    
    
    问题二:
    createEtRpcInstance getEtApplication源码在哪里能看到
   
   【环境】 
    pywpsrpc:v2.3.9
   信创amd64
   wps:v11.1.0.11704

kill进程之后,需要把你的rpc_excel、app_excel对象回收后再去新建才行的

试了下,是可以的

请问一下是用什么方式进行的回收,del吗?

Teccivil avatar Jun 20 '24 07:06 Teccivil