24. februar 2005 - 12:53
Der er
9 kommentarer og 1 løsning
tælle op på givent array hvis den findes
Hej Folk, Jeg henter nogle stringe ud fra en database som jeg tester op mod nogle andre stringe. her kommer lige noget slam kode...: private void GetAppsRunning() { SqlConnection ThisCon = new SqlConnection("server=cs01; database=ProgramsRunning; Integrated Security=true"); ThisCon.Open(); ArrayList SearchFor = new ArrayList(); SqlCommand ThisCommand = new SqlCommand("SELECT ProgramName, ProcessName FROM tblPrograms WHERE Active = @Active", ThisCon); ThisCommand.Parameters.Add("@Active", SqlDbType.VarChar, 3); ThisCommand.Parameters["@Active"].Value = "Yes"; SqlDataReader ThisDataReader = ThisCommand.ExecuteReader(); while (ThisDataReader.Read()) { SearchFor.Add(ThisDataReader[1].ToString()); } ProgramsRunning.Items.Clear(); ManagementObjectSearcher searcher; foreach (string i in AliveHosts) { try { searcher = new ManagementObjectSearcher("\\\\" + i.ToString() + "\\root\\CIMV2", "SELECT Caption FROM Win32_Process"); foreach (ManagementObject x in searcher.Get()) { // ser om process skal registreres if (SearchFor.Contains(x["Caption"].ToString())) { ProgramsRunning.Items.Add(i.ToString() + " - " + x["Caption"].ToString()); } } } catch (Exception) { ErrorMessages.Items.Add(i.ToString()); } } } Jeg ved ikke helt hvad den bedste måde er at lave det på, derfor jeg kommer med mit spm. Jeg skal have talt +1 op, hvis den process findes på den computer, sådan at jeg til sidst kan se hvor mange af de valgte processer der kører... Håber i forstår, ellers kom genre med spm... // ouT
Annonceindlæg fra Axcess Nordic
24. februar 2005 - 14:54
#1
Det er ikke helt forkert. En Hashtable var nok lidt hurtigere end en ArrayList, men det er en detalje.
24. februar 2005 - 15:10
#2
Hvad er den store forskel på ArrayList og Hashtable? altså hashtable er hurtigere, men er det ikke kun hvis der er flere ens entries? Tror jeg har fundet en ide til hvordan jeg skal lave min tælle op ting int[] Usage = new int[SearchFor.count]; og så hvis programmet er i listen lave en: Usage[l.IndexOf( x["Caption"].ToString() )]++; for så passe de 2 array index's sammen.... er der en smartere måde at lave det på? for bagefter skal det smides ned i en database....
24. februar 2005 - 15:12
#3
Nej - Hashtable er altid hurtigere (hvis alle objekter har samme hash code så er de lige hurtige, men det er urealistisk)
24. februar 2005 - 15:23
#4
Hvad er der så af fordele ved ArrayList?
24. februar 2005 - 15:23
#5
og ser min måde at tælle op på god nok ud eller hvordan ville du lave den?
24. februar 2005 - 15:25
#6
HashTable har et lille bitte overhead p.g.a. hash beregningen. ArrayList har indbygget en række følge, hvilket ofte er en god egenskab.
24. februar 2005 - 15:28
#7
Jeg kan ikke helt gennemskue din logik. Umiddelbart ville jeg tro at Usage skulle være bool[] ikke int[]
24. februar 2005 - 16:39
#8
Usage alas TimeUsed, den scanner jo flere computere igennem og kigger efter nogle bestemte process hos de forskellige, findes de, skal den ligge +1 til mit int array
24. februar 2005 - 16:45
#9
OK - jeg har som sagt ikke gennemskuet den finere logik
26. december 2005 - 21:19
#10
lukker
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.