|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Добрый день форумчанам! Пишу утилитку для работы и обучения на живом примере. Вроде все правильно, но почему то не корректно работает. Через debug уже каждую переменную просмотрела.... нашла где загвоздка, но не понимаю почему она там. Посоветовали обратиться сюда за помощью. Мне нужно фиксировать какие программы пользователь запускает, какие выключает, вот что получилось: Код: 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. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63.
1) запускаю первый раз проверку - все ок, получаю все процессы 2) открываю например ексель, нажимаю проверку - в списке добавившихся приложений появляется ексель - все ок 3) закрываю ексель или делаю любые манипуляции - оба массива ClosedAPP NewStartedAPP пустые.... Проверяла дебагером... при второй проверке - //обновим предыдущую проверку текущими процессами FirstCheckedProseses = NowCheckedProseses; FirstCheckedProseses - не содержит екселя..... Где же ошибка? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2018, 12:27 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Nat1990оба массива ClosedAPP NewStartedAPP пустые.... Потому что Вы их локально определили. Вообще-то тут все неправильно. Например, вместо массивов надо использовать List<Process> Nat1990 Код: c# 1.
Зачем перевод строки? Пользователь может запустить несколько процессов с одинаковыми названиями. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2018, 13:04 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Cat2Nat1990оба массива ClosedAPP NewStartedAPP пустые.... Потому что Вы их локально определили. Вообще-то тут все неправильно. Например, вместо массивов надо использовать List<Process> Nat1990 Код: c# 1.
Зачем перевод строки? Пользователь может запустить несколько процессов с одинаковыми названиями. Спасибо за помощь. Я конечно совсем новичок, но показалось лист больше подходит: -- Я сделал некоторые тесты. Думаю, многим будет интересно посмотреть на результаты. Исходники тестов по линке: https://github.com/ukushu/DataStructuresTests.git Короткие выводы: Array нужно использовать: Максимально часто, если это возможно (быстродействие и оптимальность памяти) Если не нужно добавлять ячейки Если ожидаемый вес < 85000b Если нужна Random Access Speed List нужно использовать: Если нужно добавлять ячейки в конец списка (в большом/малом количестве) Если нужно добавлять ячейки в начало/середину списка (в малом количестве) Если ожидаемый вес < 85000b Если нужна Random Access Speed Предпочтительно инициализировать с уже набранным количеством элементов, если это возможно. источник https://ru.stackoverflow.com/questions/639301/c-list-vs-linkedlist-vs-array -- Да, перевод лишний, осталось от экспериментов. Про одинаковые названия не подумала ( ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2018, 13:25 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
List<T> это просто обёртка над массивом с возможность добавлять, удалять и т.д. сравнивать их глупо, требуются для разных задач. Где звездочки в коде, я не понял ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2018, 13:51 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
[quot Cat2]Nat1990оба массива ClosedAPP NewStartedAPP пустые.... Потому что Вы их локально определили. /quot] так они и не должны быть глобальными.... они локально в функции используются... глобальные эти - NowCheckedProseses и FirstCheckedProseses ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2018, 13:52 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Roman MejtesList<T> это просто обёртка над массивом с возможность добавлять, удалять и т.д. сравнивать их глупо, требуются для разных задач. Где звездочки в коде, я не понял какие звездочки? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2018, 13:53 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Код: 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. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63.
В чем проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2018, 14:31 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Nat1990Cat2пропущено... Потому что Вы их локально определили. Вообще-то тут все неправильно. Например, вместо массивов надо использовать List<Process> пропущено... Зачем перевод строки? Пользователь может запустить несколько процессов с одинаковыми названиями. Спасибо за помощь. Я конечно совсем новичок, но показалось лист больше подходит: -- Я сделал некоторые тесты. Думаю, многим будет интересно посмотреть на результаты. Исходники тестов по линке: https://github.com/ukushu/DataStructuresTests.git Короткие выводы: Array нужно использовать: Максимально часто, если это возможно (быстродействие и оптимальность памяти) Если не нужно добавлять ячейки Если ожидаемый вес < 85000b Если нужна Random Access Speed List нужно использовать: Если нужно добавлять ячейки в конец списка (в большом/малом количестве) Если нужно добавлять ячейки в начало/середину списка (в малом количестве) Если ожидаемый вес < 85000b Если нужна Random Access Speed Предпочтительно инициализировать с уже набранным количеством элементов, если это возможно. источник https://ru.stackoverflow.com/questions/639301/c-list-vs-linkedlist-vs-array -- Да, перевод лишний, осталось от экспериментов. Про одинаковые названия не подумала ( вас научили плохому ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2018, 15:33 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Nat1990Если не нужно добавлять ячейки Яички ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2018, 00:29 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Nat1990Короткие выводы: Array нужно использовать: Максимально часто, если это возможно (быстродействие и оптимальность памяти) Если не нужно добавлять ячейки Если ожидаемый вес < 85000b Если нужна Random Access Speed List нужно использовать: Как много выводов из одной и причем неправильно решенной задачи! Примерно так решается, если не важно , что каждый пользователь может запустить несколько процессов с одинаковыми именами Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2018, 01:20 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Нет! На это пойтить я не могу! Как всякий программист я являюсь перфекционистом и поэтому я не могу сравнивать процессы по имени! Код: 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. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2018, 01:55 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Cat2 Код: c# 1.
иммитирующая ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2018, 01:57 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Cat2Примерно так решается Решается это с помощью WMI events. А всё вышеприведенное - баловство. Process.GetProcesses() - достаточно тяжелая операция. Я уже натыкался, что запущенная под админом на терминальном сервере, она запросто может отрабатывать секунд 10-20. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2018, 04:46 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Nat1990, перепроверяйте метод GetProcessOwner. Убрал эту проверку, заменил массивы на List, чтобы не ограничиваться 200 процессами и всё нормально отработало. У новые и закрытые процессы попадают в соответствующие списки. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2018, 10:41 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Видал я и WMI, который минутами такой список создавал. Я уже лет 5 занимаюсь удаленной диагностикой и пришел к выводу, что если есть возможность не использовать WMI - не используй! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2018, 12:24 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Cat2Видал я и WMI, который минутами такой список создавал. В данном случае не нужно создавать никаких списков, нужно слушать события создания процессов. Cat2Я уже лет 5 занимаюсь удаленной диагностикой и пришел к выводу, что если есть возможность не использовать WMI - не используй! Есть вариант, как подписаться на событие создания процесса без WMI? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2018, 05:56 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Cat2Nat1990Если не нужно добавлять ячейки Яички я и чки ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2018, 10:09 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Cat2Cat2Cat2 Код: c# 1.
иммитирующаяесли уж поправляешь, сверься с орфографическим словарем >:-| ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2018, 13:10 |
|
Алгоритмы (массивы)
|
|||
---|---|---|---|
#18+
Nat1990 Код: c# 1. 2.
FirstCheckedProseses - не содержит екселя..... Где же ошибка? Спасибо Здесь. Пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2018, 13:37 |
|
|
start [/forum/topic.php?fid=20&msg=39587391&tid=1399529]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 313ms |
total: | 470ms |
0 / 0 |