IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Список процессов, Visual Studio 2008, C#
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 104
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


С помощью каких компонент можно вывести на экран список работающих процессов?


--------------------
go ask Alice
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Код
foreach (Process p in Process.GetProcesses())


Так конечно короче, но чисто теоретически не рискуем ли мы тут получить бесконечный цикл ? Или вызов метода GetProcesses() произойдет только один раз ?

Я к тому что допустим за время каждой итерации в системе появляется еще один процесс, и если GetProcess() получает список процессов каждый раз заново, то цикл может и не завершиться.

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Цитата(klem4 @ 24.03.2008 7:56) *
Код
foreach (Process p in Process.GetProcesses())


Так конечно короче, но чисто теоретически не рискуем ли мы тут получить бесконечный цикл ? Или вызов метода GetProcesses() произойдет только один раз ?

Вызов метода GetProcesses произойдет один раз.
Для программы
Код
static void Main(string[] args) {
    foreach (Process p in Process.GetProcesses()) {
        Console.WriteLine("process '{0}':", p.ProcessName);
    }
    Console.ReadLine();
}
Компилер сгенерирует следующий код
Код
.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       47 (0x2f)
  .maxstack  2
  .locals init ([0] class [System]System.Diagnostics.Process p,
           [1] class [System]System.Diagnostics.Process[] CS$6$0000,
           [2] int32 CS$7$0001)
  IL_0000:  call       class [System]System.Diagnostics.Process[] [System]System.Diagnostics.Process::GetProcesses()
  IL_0005:  stloc.1
  IL_0006:  ldc.i4.0
  IL_0007:  stloc.2
  IL_0008:  br.s       IL_0022
  IL_000a:  ldloc.1
  IL_000b:  ldloc.2
  IL_000c:  ldelem.ref
  IL_000d:  stloc.0
  IL_000e:  ldstr      "process '{0}':"
  IL_0013:  ldloc.0
  IL_0014:  callvirt   instance string [System]System.Diagnostics.Process::get_ProcessName()
  IL_0019:  call       void [mscorlib]System.Console::WriteLine(string,
                                                                object)
  IL_001e:  ldloc.2
  IL_001f:  ldc.i4.1
  IL_0020:  add
  IL_0021:  stloc.2
  IL_0022:  ldloc.2
  IL_0023:  ldloc.1
  IL_0024:  ldlen
  IL_0025:  conv.i4
  IL_0026:  blt.s      IL_000a
  IL_0028:  call       string [mscorlib]System.Console::ReadLine()
  IL_002d:  pop
  IL_002e:  ret
} // end of method Program::Main

Как показывает дизассемблер, получение массива происходит один раз - самой первой инструкцией.


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Unknown   Список процессов   20.03.2008 17:21
volvo   Вывести на экран? Да хоть с помощью TextBox-а. Гла…   20.03.2008 18:19
klem4   using System.Diagnostics; // ... Process[…   20.03.2008 18:19
Unknown   Спасибо большое! буду разбираться   20.03.2008 19:43
Unknown   Вродь разобрался. А кто-нибудь знает, как настроит…   20.03.2008 22:05
hardcase   Вродь разобрался. А кто-нибудь знает, как настрои…   20.03.2008 23:01
Unknown   Нет, я не хочу компилировать проект на компе без V…   22.03.2008 0:42
hardcase   Нет, я не хочу компилировать проект на компе без …   22.03.2008 0:59
Unknown   Аха, спасибо!   22.03.2008 1:28
Unknown   Подскажите, пожалуста, как получить пути к исполня…   24.03.2008 1:42
hardcase   Подскажите, пожалуста, как получить пути к исполн…   24.03.2008 4:18
Unknown   ясно! спасибо!   24.03.2008 5:16
klem4   foreach (Process p in Process.GetProcesses…   24.03.2008 11:56
hardcase   [code]foreach (Process p in Process.GetProces…   24.03.2008 16:27
Unknown   И еще один вопрос не по теме: можно ли программы, …   8.04.2008 2:46
hardcase   И еще один вопрос не по теме: можно ли программы,…   8.04.2008 19:00
klem4   Помню была такая проблема в переносом проекта с vs…   8.04.2008 11:30
Unknown   Необходимо получить число потоков у каждого процес…   11.06.2008 19:04


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 19:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name