Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Folyamatok.

Hasonló előadás


Az előadások a következő témára: "Folyamatok."— Előadás másolata:

1 Folyamatok

2 Emlékeztető System.Diagnostics.Process osztály Metódusok Start()
Folyamat indítása CloseMainWindow() Folyamat főablakának bezárása (GUI alkalmazásoknál) Kill() Folyamat leállítása GetCurrentProcess() Aktuális folyamatot reprezentáló objektum lekérése GetProcesses() Összes folyamat adatainak lekérése a helyi számítógépről WaitForExit() Várakozás az adott folyamat befejeződésére Tulajdonságok StartInfo A folyamathoz tartozó ProcessStartInfo példány PriorityClass A folyamat prioritása (fontossági szintje) EnableRaisingEvents A folyamat kiválthat-e eseményeket HasExited A folyamat kilépett-e ExitCode, ExitTime Kilépési kód, illetve a kilépés (vagy leállítás) időpontja StandardInput, StandardOutput Alapértelmezett be- és kimeneti csatorna (adatfolyam) Események Exited A folyamat kilépett (vagy leállították) Összefoglalás: új processzek egyszerű vezérlése (létrehozás, leállítás), ill. processzekről/ből információnyerésre.

3 Emlékeztető System.Diagnostics.ProcessStartInfo osztály Tulajdonságok
FileName Fájlnév megadása az indítandó folyamathoz (program vagy programmal társított fájltípusba tartozó fájl neve) Arguments, WorkingDirectory Parancssori paraméterek és munkakönyvtár megadása az indítandó folyamathoz Domain, UserName, Password Folyamat indítása adott felhasználó nevében RedirectStandardInput, RedirectStandardOutput Alapértelmezett be- és kimeneti csatorna átirányítása ErrorDialog Hibaüzenet jelenjen-e meg, ha a folyamat indítása sikertelen UseShellExecute Operációs rendszerhéj programindító funkciójának használata folyamat indításához Verb A társított fájl megnyitásakor végrehajtandó művelet WindowStyle Kezdeti ablakméret megadása (normál, minimalizált vagy maximalizált méret) Számos paraméter és beállítás adható meg a folyamatként elindítani kívánt programhoz UseShellExecute: shell indítást használjuk-e? Ha igen, akkor: nem kell hogy futtatható állomány legyen (nem futtathatót a társított programmal indít el; mint kettős kattintás a windows explorerben). ErrorDialog csak így megy. Ha UseShellExecute==false, akkor csak futtatható indítható, ÉS megengedi a RedirectStandardInput/Output/Errort. Teljes elérési út kell.

4 Folyamatok listázása using System; using System.Diagnostics;
using System.Linq; namespace _01_Processes { class Program static void Main(string[] args) foreach (var p in Process.GetProcesses().OrderBy(x => x.Id)) Console.WriteLine(string.Format("#{0}\t {1}", p.Id, p.ProcessName)); }

5 Folyamatok listázása static void Main(string[] args) {
if (Process.GetProcesses().Where( x => x.ProcessName == Process.GetCurrentProcess().ProcessName && x.Id != Process.GetCurrentProcess().Id ).Count() > 0) Console.WriteLine("Ez a folyamat már fut!"); return; } Console.WriteLine("Helló világ!"); Console.ReadLine();

6 Folyamat indítása Process.Start("cmd"); Process.Start("explorer");
Process.Start("valami.jpg"); Process p = Process.Start(new ProcessStartInfo("valami.exe") { CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true });

7 Kimenet olvasása //hello.exe: if (args.Length > 0)
Console.WriteLine("Hello " + args[0] + "!"); else Console.WriteLine("Hello világ!"); Process p = Process.Start(new ProcessStartInfo("hello") { CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true }); p.WaitForExit(); Console.WriteLine(p.StandardOutput.ReadToEnd());

8 Kimenet olvasása, argumentum átadása
//hello.exe: if (args.Length > 0) Console.WriteLine("Hello " + args[0] + "!"); else Console.WriteLine("Hello világ!"); Process p = Process.Start(new ProcessStartInfo("hello", "Pistike") { CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true }); p.WaitForExit(); Console.WriteLine(p.StandardOutput.ReadToEnd());

9 Esemény kilépéskor static void Main(string[] args) {
string[] hosts = new string[] "users.nik.uni-obuda.hu", "index.hu", "google.com" }; foreach (var h in hosts) Process p = Process.Start(new ProcessStartInfo("ping", "-n 10 " + h) CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true }); p.EnableRaisingEvents = true; p.Exited += P_Exited; } Console.ReadLine(); private static void P_Exited(object sender, EventArgs e) Console.WriteLine((sender as Process).StandardOutput.ReadToEnd());

10 Feladat Hozzon létre konzolos alkalmazást, amelynek segítségével előre beállítható darabszámú traceroute (tracert) folyamatot tudunk párhuzamosan futtatni, így az egyes hívások nem blokkolják a fő alkalmazást.

11 Feladat Egy gyűjteményben eltárolunk hosztokat. A feladat a hosztokhoz tartozó IP címek kigyűjtése, nslookup segítségével. Az eredmények akkor jelenjenek meg, amikor minden kérés feldolgozásával végzett!

12 Források Miklós Árpád prezentációja
Jeffrey Richter: CLR via C#, 4th edition (2012, Microsoft Press)


Letölteni ppt "Folyamatok."

Hasonló előadás


Google Hirdetések