powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как убить поток процесса?
8 сообщений из 8, страница 1 из 1
Как убить поток процесса?
    #39436305
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
1. Это не возможно. В классе ProcessThread такого метода нет
2. Есть программа Process Explorer производства Русиновича, которая запросто убивает такие потоки
...
Рейтинг: 0 / 0
Как убить поток процесса?
    #39436309
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как убить поток процесса?
    #39436316
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Dima T Thread.Abort()
Это ничего, что я спрашиваю про ProcessThread ?
...
Рейтинг: 0 / 0
Как убить поток процесса?
    #39436323
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Thread, это грубо говоря то, что я сам явно в программе запускаю. ProcessThread запускается программой самостоятельно, например, при асинхронных вызовах, при запуске Task или AsParallel() в LINQ
...
Рейтинг: 0 / 0
Как убить поток процесса?
    #39436339
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,
id eсть ? значит можно убить.
...
Рейтинг: 0 / 0
Как убить поток процесса?
    #39436343
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ProcessThread.Id это ThreadId виндовса, то можно c помощью WinAPI: OpenThread() TerminateThread()
...
Рейтинг: 0 / 0
Как убить поток процесса?
    #39436350
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2запускается программой самостоятельно, например, при асинхронных вызовах, при запуске Task или AsParallel() в LINQ
Для их корректной остановки CancellationToken есть.

Есть подозрение что после такого убивания потока прога может повести себя непредсказуемым образом.
...
Рейтинг: 0 / 0
Как убить поток процесса?
    #39436443
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Dima TЕсли ProcessThread.Id это ThreadId виндовса, то можно c помощью WinAPI: OpenThread() TerminateThread()
Спасибо, по этому пути на ПТ и послали
Вот так работает
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
        [Flags]
        public enum ThreadAccess : int
        {
            TERMINATE = (0x0001),
            SUSPEND_RESUME = (0x0002),
            GET_CONTEXT = (0x0008),
            SET_CONTEXT = (0x0010),
            SET_INFORMATION = (0x0020),
            QUERY_INFORMATION = (0x0040),
            SET_THREAD_TOKEN = (0x0080),
            IMPERSONATE = (0x0100),
            DIRECT_IMPERSONATION = (0x0200)
        }
        [DllImport("kernel32.dll", SetLastError = true)]
        static extern IntPtr OpenThread(ThreadAccess dwDesiredAccess, bool bInheritHandle,
        uint dwThreadId);
        [DllImport("kernel32.dll")]
        static extern bool TerminateThread(IntPtr hThread, uint dwExitCode);

        private static void TerminateThreadByName(string name, int UserProcessorTimeMinutes)
        {
            Process[] ps = Process.GetProcessesByName(name);
            foreach (Process process in ps)
            {
                foreach (ProcessThread thread in process.Threads)
                {
                    if (thread.UserProcessorTime > TimeSpan.FromMinutes(UserProcessorTimeMinutes))
                    {
                        IntPtr handle =
                             OpenThread(
                           ThreadAccess.TERMINATE,
                           false,
                           (uint)thread.Id);
                        TerminateThread(handle, 0);
                    }
                }
            }
        }
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как убить поток процесса?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]