2017-02-20 24 views
0

в системе из мест, где я написал код ITCL в потоке, который убивает первенствоватьITCL/TCOM/Tcl/Темы: Является ли этот поток непрерывно работает

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

После этого, в течение нескольких различных желаний оболочек следующая команда вызывает Excel App, но я могу видеть, что это сразу же удалились в диспетчере задач

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

выше повторяется в течение нескольких желаний оболочек (каждый вызывается после закрытия предыдущей оболочки желание).

При управлении любой команды, ошибка появляется как:

"invalid command name ::tcom::handle0x027CE918" 

Но работает следующий код и открывает приложение Word, без проблем

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

После ожидания в течение длительного времени (15 -20 минут), я перезапустил оболочку пожеланий и смог запустить (без проблем) следующий код:

И другое сообщение об ошибке на этот раз после убийства первенствует

(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 - это не clenaup автоматически убивать процесс первенствовать связанный?

ответ

1

Это была некоторая проблема с ОС - не повторяется после того, как ОС была повторно отображена.