Autor |
Beitrag |
Ccenter
      
Beiträge: 154
Win7
C#
|
Verfasst: Di 21.09.10 20:20
Moin,
ich versuche gerade einen Array zu durchsuchen:
C#-Quelltext 1: 2: 3:
| Process[] p = Process.GetProcesses(); if (((IList<string>)p).Contains("firefox")) {...} |
Wo bitte ist denn mein Fehler bzw wie müsste es richtig lauten?
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 21.09.10 20:28
Du castest eine Array aus Prozessen in eine Liste aus Strings. Das kann nicht funktionieren
Und dürfte eigentlich auch überflüssig sein, die Extension Methods sollten alle mit einem Array funktionieren.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Di 21.09.10 20:41
Christian S. hat folgendes geschrieben : | Und dürfte eigentlich auch überflüssig sein, die Extension Methods sollten alle mit einem Array funktionieren. |
Das Problem ist ja, dass er den Firefox-Prozess nicht hat, sondern nur seinen Namen.
Die einfachste Lösung wäre wohl Process.GetProcessesByName
Grüße,
Yogu
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 21.09.10 20:51
Die Extension Methods nehmen ja IIRC alle Lambda-Ausdrücke, da kann man dann auch den Namen prüfen
In diesem Fall sollte Dein Vorschlag aber wirklich einfacher sein.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
traceurmicha
      
Beiträge: 160
Erhaltene Danke: 9
Win XP SP2, Win 7 Pro., Ubuntu 9, Debian 5
C#, ASP.NET, MSSQL, PHP(Microsoft Visual Studio 2010 Ultimate, SharpDevelop 4, Microsoft SQL Server2008 Express, Eclipse for PHP)
|
Verfasst: Mi 29.09.10 10:22
Ich bin jetzt einfach mal so dreist und beantworte die simple Frage:
Zitat: | ich versuche gerade einen Array zu durchsuchen
Wo bitte ist denn mein Fehler bzw wie müsste es richtig lauten? |
ich würde ein Array so durchsuchen:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7:
| for(int i = 0;i<tempArray.Lenght;i++) { if(tempArray[i].Contains("firefox")) { } } |
Sorry falls ich das Thema verfehlt hab, will nur behilflich sein^^
_________________ Programmieren ist ein Rennen zwischen den Softwareentwicklern, die versuchen größere und bessere idiotensichere Programme zu schreiben und dem Universum, welches versucht größere und bessere Idioten zu produzieren. Zur Zeit liegt das Universum in Führung.
Für diesen Beitrag haben gedankt: Ccenter
|
|
Ccenter 
      
Beiträge: 154
Win7
C#
|
Verfasst: Mi 29.09.10 18:59
Ich hab mein Problem jetzt quick&dirty gelöst: Einfach mit einer whileschleife mit try/catch, welche getprocessbyname durchführt.
Die Methode von traceurmicha ist natürlich schöner, werde ich ausbessern. Danke!
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 29.09.10 19:10
Was passt dir denn an Yogus Vorschlag nicht?
_________________ >λ=
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Mi 29.09.10 22:11
traceurmicha hat folgendes geschrieben : | ich würde ein Array so durchsuchen:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7:
| for(int i = 0;i<tempArray.Lenght;i++) { if(tempArray[i].Contains("firefox")) { } } | |
Naja, vielleicht ein Array aus Strings, aber sicher kein Array aus Prozessen, wie es Process.GetProcess zurückgibt, oder?
Ccenter hat folgendes geschrieben : | Ich hab mein Problem jetzt quick&dirty gelöst: Einfach mit einer whileschleife mit try/catch, welche getprocessbyname durchführt. |
Wofür brauchst du eine Schleife und wo wird eine Ausnahme geworfen? Wenn du genau einen Firefox-Prozess brauchst, kannst du doch einfach prüfen, ob die Länge >= 1 ist und dann auf das Element mit dem Index 0 zugreifen. Brauchst du alle, gehst du eben alle durch, aber eine Ausnahme dürfte trotzdem nicht entstehen 
|
|
traceurmicha
      
Beiträge: 160
Erhaltene Danke: 9
Win XP SP2, Win 7 Pro., Ubuntu 9, Debian 5
C#, ASP.NET, MSSQL, PHP(Microsoft Visual Studio 2010 Ultimate, SharpDevelop 4, Microsoft SQL Server2008 Express, Eclipse for PHP)
|
Verfasst: Do 30.09.10 08:25
@Yogu:
Das durchsuchen der Prozesse würd ich dann so machen:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| Process[] p = Process.GetProcesses(); for (int i = 0; i < p.Length; i++) { if (p[i].ToString().Contains("firefox")) { } } |
_________________ Programmieren ist ein Rennen zwischen den Softwareentwicklern, die versuchen größere und bessere idiotensichere Programme zu schreiben und dem Universum, welches versucht größere und bessere Idioten zu produzieren. Zur Zeit liegt das Universum in Führung.
|
|
Ccenter 
      
Beiträge: 154
Win7
C#
|
Verfasst: Do 30.09.10 14:25
Yogus Vorschlag hab ich doch angenommen und umgesetzt
Ccenter hat folgendes geschrieben : | Ich hab mein Problem jetzt quick&dirty gelöst: Einfach mit einer whileschleife mit try/catch, welche getprocessbyname durchführt.
Die Methode von traceurmicha ist natürlich schöner, werde ich ausbessern. Danke! |
Was ich wohl leider vergessen habe zu sagen ist, dass ich durchgehend prüfen möchte ob ein bestimmter Process läuft. Aber es läuft jetzt ja =)
|
|