Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1452 / 1025 / 142
Регистрация: 23.07.2010
Сообщений: 5,679
1

Можно ли как-то узнать, что некий запущенный процесс аварийно завершил работу?

12.07.2013, 15:49. Просмотров 1227. Ответов 9
Метки нет (Все метки)

Цитата Сообщение от Psilon Посмотреть сообщение
Шарповскими методами примерно так:
а можно ли как-то узнать, что некий запущенный процесс аварийно завершил работу? (или его принудительно остановили)
 Комментарий модератора 
Сообщения выделены из темы Послать сообщение приложению
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.07.2013, 15:49
Ответы с готовыми решениями:

[UWP] Существует ли способ узнать, что работу приложения завершил пользователь?
Если это десктопное приложение, то нажал на крестик в правом верхнем углу окна или нажал Alt+F4....

Невозможно обработать запрос, так как процесс (---) завершил свою работу
Здравствуйте знатоки. Написал я диспетчер, список процессов вывожу в листбокс, запросы на инфу о...

Узнать завершил ли работу Activity (не AsyncTask)
Добрый день ув. Программисты. - Имеется ImageLoader.java работает без AsyncTask. - И Имеется...

Узнать кто завершил процесс с использованием taskkill или чего-то подобного
Как узнать, имя учетной записи от имени которой завершается процесс (допустим, того же chrome.exe)...

9
0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 7
12.07.2013, 16:13 2
pincet, думаю, что вам будет достаточно определить: запущен ли процесс. В случае, если процесс не запущен, то выполнить какие-либо действия. Реализовать это можно так, как предложил Psilon. Только меняете действия в "if" и "else" на свои.
0
601 / 576 / 157
Регистрация: 29.06.2010
Сообщений: 1,610
Завершенные тесты: 1
12.07.2013, 16:24 3
Цитата Сообщение от Saas Посмотреть сообщение
почему не закрывается, нужный мне, Яндекс.Браузер

Не по теме:

Я думаю это из-за того что код, выложенный Psilon'ом, предназначен для работы с программами, а не с... этим... =)

0
1452 / 1025 / 142
Регистрация: 23.07.2010
Сообщений: 5,679
12.07.2013, 16:35  [ТС] 4
Ничего лучшего чем такой говнокодец в голову не приходит
C#
1
2
3
4
5
6
7
8
var p = Process.GetProcessesByName("excel").FirstOrDefault();
 
            while (p != null)
            {
                p = null;
                p = Process.GetProcessesByName("excel").FirstOrDefault();
                Thread.Sleep(1000);
            }
0
0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 7
12.07.2013, 16:39 5
Spectral-Owl, зря вы так. Неплохой браузер. Да, и использует он Сhromium...
0
601 / 576 / 157
Регистрация: 29.06.2010
Сообщений: 1,610
Завершенные тесты: 1
12.07.2013, 17:54 6
http://www.izone.ru/internet/browser...t-comments.htm отзывы с izone. на 1 положительный отзыв приходится 4 отрицательных, и это только последние отзывы, страшно подумать о том какое было соотношение, когда браузер был посырее.

Добавлено через 1 час 9 минут
хм... дубль темы... и сюда отпишу:

если проблема в том что процессов несколько - помогает слегка модифицированный код от Psilon:
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
using System;
using System.Diagnostics;
using System.Linq;
 
namespace ConsoleApplication81
{
    class Program
    {
        static void Main()
        {
            var p = Process.GetProcessesByName("winword").FirstOrDefault();
            while (p != null)
            {
                if (p != null)
                {
                    Console.WriteLine("Closing...");
                    p.CloseMainWindow();
                    Console.WriteLine("Waiting for exit");
                    p.WaitForExit();
                    Console.WriteLine("Closed");
                    p = Process.GetProcessesByName("winword").FirstOrDefault();
                }
            }
            Console.WriteLine("Finish");
            Console.ReadKey();
        }
    }
}
но проблема наверняка в другом: происходит запрос на закрытие в каком либо из процессов, и программа ждёт пока на этот запрос соответсвующе отриагируют... или вообще запроса нет: тупо сброс флага закрытия от другой программы (я не удивлюсь если яндекс сделал именно так))

Добавлено через 3 минуты
P.S. CloseReason от такого кода - TaskManagerClosing, если интересно)
0
Master of Orion
Эксперт .NET
6065 / 4923 / 903
Регистрация: 10.07.2011
Сообщений: 14,520
Записей в блоге: 5
Завершенные тесты: 4
13.07.2013, 04:43 7
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
using System;
using System.Diagnostics;
using System.Linq;
 
namespace ConsoleApplication82
{
    internal class Program
    {
        private static void Main()
        {
            Console.WriteLine("Kill? Y/N");
            string readLine = Console.ReadLine();
            bool kill = readLine != null && readLine.ToLower().Contains('y');
 
 
            var info = new ProcessStartInfo { CreateNoWindow = true, FileName = "notepad" };
            var p = Process.Start(info);
            if (kill)
                p.Kill();
            p.WaitForExit();
            Console.WriteLine(p.ExitCode != 0 ? "Exit was bad" : "Program terminated succesfuly");
            Console.WriteLine(p.ExitCode);
            Console.ReadKey();
        }
    }
}
Добавлено через 1 минуту
Spectral-Owl, нафига вы вызываете FirstOrDefault(), если вам нужны все элементы? Напрягает же... Шарп конечно не самая быстрая вещь, но подобные совершенно наплевательские отношения очень расстраивают.
0
282 / 281 / 108
Регистрация: 04.09.2010
Сообщений: 638
Завершенные тесты: 1
15.07.2013, 23:31 8
Цитата Сообщение от Psilon Посмотреть сообщение
Spectral-Owl, нафига вы вызываете FirstOrDefault(), если вам нужны все элементы? Напрягает же
Цитата Сообщение от Spectral-Owl Посмотреть сообщение
while (p != null)
* * * * * * {
* * * * * * * * if (p != null)
* * * * * * * * {
А это не напрягает?
0
Master of Orion
Эксперт .NET
6065 / 4923 / 903
Регистрация: 10.07.2011
Сообщений: 14,520
Записей в блоге: 5
Завершенные тесты: 4
16.07.2013, 00:46 9
kesean, напрягает, но лишняя проверка не так ужасно, по сравнению с этим)
0
601 / 576 / 157
Регистрация: 29.06.2010
Сообщений: 1,610
Завершенные тесты: 1
16.07.2013, 10:34 10
Цитата Сообщение от kesean Посмотреть сообщение
if (p != null)
это я просто удалить забыл по запарке)

C#
1
2
3
4
5
 
while (p != null)
{
...
      p = Process.GetProcessesByName("winword").FirstOrDefault();
а это гарантированно завершит работу (если её вообще можно завершить), т.к. получение в один момент всех элементов, с последующим закрытием их по одному и ожиданием каждого меньше результативно, т.к. если процессов несколько кто вам сказал что список не изменится во время удаления?

так что по старинке: удалили, посмотрели есть ли ещё что, удалили... =)

Добавлено через 7 минут
но вообще я это потом дадумал, а так на самом деле выглядит ужасно)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2013, 10:34

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Можно ли после того как серверный скрипт завершил свою работу, вызвать определнную процедуру из него клиентским скриптом?
В общем такой вопрос, можно ли после того как верверный скрипт завершил свою работу, вызвать...

CurrPorts обнаружил некий неизвестный процесс. Что это и как лечить?
Простите за глупый вопрос, но в общем картина такая Что с этим делать? Как узнать что за...

Отловить запущенный процесс по имени, узнать путь и перейти туда
задача: через .cmd или .bat отлавливать запущенный процесс по его имени; узнавать путь по которому...

Как узнать, что это моя строка и получить 'Некий текст'?
Бежим по файлу. Встречаются строки типа *<Тэг>Некий текст</Тэг>*$ или *<Тэг>Некий текст$ Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.