Кто нибудь встречал такое чудо? Происходит только на Windows 10, как под дебагером, так и без. Причем дебагер не позволяет pause процесс и посмотреть стек, stop process в Visual Studio вызывает зависание оной, пока хост процесс не прибит снаружи насильно. Также невозможно подцепится WinDbg или adplus (говорят - нет такого процесса). PerfMon показывает, что остается единственный main thread который спит. Единственно возможной опцией захватить стек был последняя версия SystemInternals ProcExp, который показал, что процесс ожидает чего-то в кернеле.
C# Environment.Exit(0) leaves main thread to hang on Windows 10
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
C# Environment.Exit(0) leaves main thread to hang on Windows 10
...а мы такой компанией, возьмем, да и припремся к Элис!
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
Re: C# Environment.Exit(0) leaves main thread to hang on Windows 10
Забыл добавить, что Environment.Exit(0) вызывается в конце Main(), после того, как custom ApplicatioContext закончил бежать.
Нечто вроде:
Нечто вроде:
Code: Select all
[STAThread]
static void Main(string[] args) {
MyApplicationContext context = new MyApplicationContext(typeof(frmMain));
Application.Run(context);
Environment.Exit(0);
}
...а мы такой компанией, возьмем, да и припремся к Элис!
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
Re: C# Environment.Exit(0) leaves main thread to hang on Windows 10
На самом деле, если даже Environment.Exit(0) убрать, то программа виснет в том же месте и только на Windows 10, на Windows 7 заканчивается без проблем.
.NET Framework 4.5.2, если это имеет значение.
.NET Framework 4.5.2, если это имеет значение.
...а мы такой компанией, возьмем, да и припремся к Элис!
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
Re: C# Environment.Exit(0) leaves main thread to hang on Windows 10
Вот это: мне ужасно помогло. Одно только не пойму, почему для Windows 10 я должен это добавлять
Code: Select all
[STAThread]
static void Main(string[] args) {
MyApplicationContext context = new MyApplicationContext(typeof(frmMain));
Application.Run(context);
if (isWindows10()) {
System.Diagnostics.Process.GetCurrentProcess().Kill(); // <--- magic Environment.Exit(-1)
}
}
...а мы такой компанией, возьмем, да и припремся к Элис!