Список процессов, Visual Studio 2008, C# |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Список процессов, Visual Studio 2008, C# |
Unknown |
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 104 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
С помощью каких компонент можно вывести на экран список работающих процессов?
-------------------- go ask Alice
|
klem4 |
Сообщение
#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";'
|
hardcase |
Сообщение
#3
|
code warrior Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: 8 |
Код 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 Как показывает дизассемблер, получение массива происходит один раз - самой первой инструкцией. -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
Текстовая версия | 20.04.2024 19:25 |