2017-02-20 86 views
0

在的地方我在殺死Excel中ITCL/TCOM /的Tcl /線程:這是線程連續運行

method Kill_XL {} { 
    thread::create { 
     set rc [catch {exec taskkill /t /f /im Excel*} output] 
    } 
    sleep 5 
} 

之後,幾個不同的願望炮彈以下命令調用線程寫入ITCL代碼Excel的應用程序,但我可以看到它立即在任務管理器退出

(shh..) 2 % ::tcom::ref createobject Excel.Application 
::tcom::handle0x027CE918 
(shh..) 3 % ::tcom::ref createobject Excel.Application 
::tcom::handle0x027CE918 

以上重複做了幾個願望彈(關閉之前的願望後殼每個調用)。

"invalid command name ::tcom::handle0x027CE918" 

但是,下面的代碼工作並沒有問題

(shh..) 4 % ::tcom::ref createobject Word.Application 
::tcom::handle0x027CE918 

打開了一個Word應用程序等待很長一段時間後(15:

上運行的任何命令,如出現錯誤-20分鐘),我重新啓動了希望外殼,並能夠運行(沒有問題)以下代碼:

(shh..) 8 % set x [::tcom::ref createobject Excel.Application] 
::tcom::handle0x0272EB58 
(shh..) 9 % $x Visible 1 

,並開始這個時候殺的Excel

(shh..) 10 % thread::create { 
       set rc [catch {exec taskkill /t /f /im Excel*} output] 
      } 
tid00004658 


(shh..) 11 % $x Visible 0 
0x800706ba {The RPC server is unavailable.} 

再經過不同的錯誤消息一遍:

(shh..) 20 % ::tcom::ref createobject Excel.Application 
::tcom::handle0x0272EB58 
(shh..) 21 % 
(shh..) 21 % ::tcom::handle0x0272EB58 Visible 1 
invalid command name "::tcom::handle0x0272EB58" 

是螺紋殺導致問題 - 我總是睡5秒鐘,確保殺是成功的。

或者它是tcom-Excel的其他(已知)問題嗎?

而且,在相同的應用程序處理

(shh..) 30 % foreach x {. .} {puts [::tcom::ref createobject Excel.Application]} 
::tcom::handle0x0272EB58 
::tcom::handle0x0272EB58 

難道這是一個問題,清理未發佈TCOM對象所有的時間 - 它不是殺死相關的Excel進程自動clenaup?

回答

1

這是操作系統的一些問題 - 操作系統重新映像後不會重複出現。