2009-08-18 4 views
0

У меня есть приложение Windows, написанное в WPF и WF, которое также взаимодействует с внешними веб-службами и локальной копией Quickbooks через API Quickbooks.EXE остается в диспетчере задач после выхода

Все работает хорошо, однако единственная проблема заключается в том, что даже после выхода из приложения Windows и Quickbooks мы все еще видим исполняемый файл приложения Windows, сидящий в диспетчере задач.

Кто-нибудь знает, как мы можем это решить?

спасибо, badallen

+0

Просто, чтобы проверить, вы уверены, что это автономный исполняемый файл все еще работает, а не * appname * .vshost.exe? –

+1

Я бы попытался отладить приложение. После того, как вы «закроете его» (закрытие главного окна), отмените отладчик, чтобы увидеть, что делает теперь невидимое приложение. Возможно, вы захотите использовать сервер символов Microsoft, чтобы получить подробные трассировки стека. Из вашего описания в одиночку довольно сложно догадаться, в чем проблема. –

+1

Предлагаю искать нефонические потоки, которые не останавливаются, когда основное приложение отключается. –

ответ

0

только предположение, но я хотел бы посмотреть на ваш WF или QuickBooks API висит на их Dispose() вызовов. Иногда сетевые API слишком стремятся правильно очищать, а не просто закрывать и убираться с дороги.

Один из способов справиться с этим - через bg thread w/timeout. Что-то вроде следующего

 Action close = api.Dispose; 
     var ar = close.BeginInvoke(cb => close.EndInvoke(cb), null); 
     ar.AsyncWaitHandle.WaitOne(500);