У меня есть обработчик исключений потока, который сохраняет трассировку стека исключений и должен закрыть приложение. Я звоню Applicatoin.Exit, но он закрывает окно, а приложение работает без окон.
Я знаю, что это обычно происходит, потому что некоторые фоновые потоки все еще работают. Я подключил windbg к процессу без окон, и, похоже, есть только два управляемых потока, один из которых выглядит как поток финализатора gc, а второй - как насос сообщений ??? Кто-нибудь это понимает?
Есть ли разница между вызовом Application.Exit и закрытием главного окна пользователем?
0:005> !threads
ThreadCount: 2
UnstartedThread: 0
BackgroundThread: 1
PendingThread: 0
DeadThread: 0
Hosted Runtime: no
PreEmptive GC Alloc Lock
ID OSID ThreadOBJ State GC Context Domain Count APT Exception
0 1 284 002e9668 6020 Enabled 021a7268:021a7fe8 002e4c68 0 STA
2 2 d48 002f9890 b220 Enabled 00000000:00000000 002e4c68 0 MTA (Finalizer)
0:001> ~0 s
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\system32\MSCTF.dll -
eax=02162530 ebx=002e9668 ecx=02162530 edx=02162530 esi=0019ef9c edi=0019ee3c
eip=77589a94 esp=0019edcc ebp=0019ede8 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ntdll!KiFastSystemCallRet:
77589a94 c3 ret
0:000> !clrstack
OS Thread Id: 0x284 (0)
ESP EIP
0019ef24 77589a94 [ComPlusMethodFrameGeneric: 0019ef24] MS.Win32.UnsafeNativeMethods+ITfMessagePump.GetMessageW(System.Windows.Interop.MSG ByRef, Int32, Int32, Int32, Boolean ByRef)
0019ef44 56d61937 System.Windows.Threading.Dispatcher.GetMessage(System.Windows.Interop.MSG ByRef, IntPtr, Int32, Int32)
0019ef90 56d617e3 System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
0019efe0 56d616c7 System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)
0019effc 56d6162d System.Windows.Threading.Dispatcher.Run()
0019f008 5533ddb0 System.Windows.Application.RunInternal(System.Windows.Window)
0019f034 5533dbe5 System.Windows.Application.Run(System.Windows.Window)
0019f044 5533d836 System.Windows.Application.Run()
0019f04c 01ea00ad UI.App.Main()
0019f268 79e7c74b [GCFrame: 0019f268]