Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 4.277 pregleda

Najnovija ↓

Pracenje aktivnih procesa i iscrtavanje grafika 22.05.2010. u 13:22 · pre 200 meseci #1
U datagrid view treba da prikazem aktivne procese i velicinu zauzete memorije. Imam neka 2 parametra koja biram iz drop down liste,a to su vreme uzorkovanja (10s,20s) i ukupno vreme pracenja (3,5,10,30,60min).I kao krajnji rezultat dobijam 2 grafika i to : x-vreme; y velicina zauzete memorije; x-vreme; y-broj aktivnih procesa. Mislio sam da koristim biblioteku ZedGraph za grafike.Problem je sto prikazem parametre u datagrid view,ali imam problem sa graficima i ovim parametrima(vreme uzorkovanja i vreme pracenja).Da li moze neko da pomogne?
Potpis
Život je polje svih mogućnosti.
Ono što izaberete to je vaš život.
Re: Pracenje aktivnih procesa i iscrtavanje grafika 23.05.2010. u 03:43 · pre 200 meseci #2
Citat:

Problem je sto prikazem parametre u datagrid view,ali imam problem sa graficima i ovim parametrima(vreme uzorkovanja i vreme pracenja)


Koji je konkretan problem?

Sto se crtanja grafikona tice, za grafikone mozes komotno da koristis .Net GDI+ wrappere tj. Graphics klasu.
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Re: Pracenje aktivnih procesa i iscrtavanje grafika 23.05.2010. u 14:28 · pre 200 meseci #3
Kako mogu da na odredjeno vreme osvezavam listu aktivnih procesa koju imam u datagridview i dan na osnovu pracenih parametara isctava grafik?
Potpis
Život je polje svih mogućnosti.
Ono što izaberete to je vaš život.
Re: Pracenje aktivnih procesa i iscrtavanje grafika 24.05.2010. u 12:33 · pre 200 meseci #5
U recenici:
Citat:
BrainDemageKako mogu da na odredjeno vreme osvezavam listu aktivnih procesa koju imam u datagridview i dan na osnovu pracenih parametara isctava grafik?
da li je problem
1) kako nesto raditi svakih n jedinica vremena
2) kako osveziti listu trenutno aktivnih procesa
3) kako iscrtati grafik
4) sve navedeno
Re: Pracenje aktivnih procesa i iscrtavanje grafika 24.05.2010. u 13:24 · pre 200 meseci #6
Ajde ovako za pocetak.Kako da dobijam listu aktivnih procesa u realnom vremenu ili u vremenu od npr 10sec?Znaci kada je program pokrenut,on prikazuje listu procesa,i broj trenutno aktivnih procesa,ali lista se ne osvezava,tako da dok ja u pozadini pokrenem neke programe(npr notepad.exe)broj procesa ostaje isti.Znaci meni treba da npr na svakih 10 sec provera koji su procesi pokrenuti i rezultat da smesta u gridview.
To je prvi problem.Kad to uradim treba treba na osnovu parametara vremena uzorkovanja (tih 10 sec) da iscrtam grafik sa osama x=vreme; y=velicina yauzete memorije.
Code:

private void btnGetProcess_Click(object sender, EventArgs e)
        {
            ConnectionOptions conn = new ConnectionOptions();
            ManagementScope ms = new ManagementScope("\\\\localhost",conn);
            ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Process");
            ManagementObjectSearcher search = new ManagementObjectSearcher(ms, query);
            ManagementObjectCollection returnColl = search.Get();
            
            int i = 0;
            gridMonitoring.Rows.Clear();

            foreach (ManagementObject Oreturn in returnColl)
            {
                gridMonitoring.Rows.Add(new DataGridViewRow());
                gridMonitoring.Rows[i].Cells[0].Value=Oreturn["Name"].ToString();
                gridMonitoring.Rows[i].Cells[1].Value=Oreturn["ProcessID"].ToString();
                gridMonitoring.Rows[i].Cells[2].Value = Oreturn["Description"].ToString();
                gridMonitoring.Rows[i].Cells[3].Value = Oreturn["Priority"].ToString();
                gridMonitoring.Rows[i].Cells[4].Value = (Convert.ToInt64(Oreturn["WorkingSetSize"].ToString())).ToString();
                gridMonitoring.Rows[i].Cells[5].Value = Oreturn["ThreadCount"].ToString();
                gridMonitoring.Rows[i].Cells[6].Value = Oreturn["ExecutablePath"].ToString();
                txtNumberOfProcess.Text = gridMonitoring.Rows.Count.ToString();
            
                i++;
             }
            












Potpis
Život je polje svih mogućnosti.
Ono što izaberete to je vaš život.
Re: Pracenje aktivnih procesa i iscrtavanje grafika 24.05.2010. u 13:31 · pre 200 meseci #7
Udri Timer na 10 sek koji poziva btnGetProcess_Click. Za grafik napravi

Code:

class GraphNode
{
  int Time {get; set;}
  int PrivateWorkingSet {get; set;}
}
List<GraphNode> GraphData = new List<GraphNode>();


Zatim napravi metodu koja crta grafik na osnovu liste GraphData.
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Re: Pracenje aktivnih procesa i iscrtavanje grafika 24.05.2010. u 14:24 · pre 200 meseci #8
Uradio sam to sa timerom,i refreshuje listu u intervalima od 3,10 i 20sec. Za grafik sam razmisljao da koristim ZedGraph,ali ako postoji neko drugo resenje,moze i to,samo da dodjem do krajnjeg rezultata. Prvi put radim sa grafikonima,tako da mi je pomoc neophodna.Ako moze malo detaljnije :-)
Potpis
Život je polje svih mogućnosti.
Ono što izaberete to je vaš život.
Re: Pracenje aktivnih procesa i iscrtavanje grafika 24.05.2010. u 22:41 · pre 200 meseci #9
Ok,ajde ovako.Evo slika kako bi trebalo da izgleda grafik,a evo i primera koda. Za grafik je koriscen ZedGraph biblioteka.
Code:
private void Form1_Resize(object sender, EventArgs e)
        {
            SetSize();
        }
        private void SetSize()
        {
            zedGraphControl1.Location = new Point(15, 405);
            zedGraphControl1.Size = new Size(ClientRectangle.Width - 500, ClientRectangle.Height - 450);

        }

      
        private void CreateGraph(ZedGraphControl zcg)
        {
            GraphPane myPane = zcg.GraphPane;
            myPane.Title.Text = "Process";
            myPane.XAxis.Title.Text = "x osa";
            myPane.YAxis.Title.Text = "Y osa";

            double x, y1, y2;
            PointPairList list1 = new PointPairList();
            PointPairList list2 = new PointPairList();
            
            for (int i = 0; i <=30 ; i++)
            {
                x = (double)i + 5;
                y1 = 1.5 + Math.Sin((double)i * 0.2);
                y2 = 3.0 * (1.5 + Math.Sin((double)i * 0.2));
                list1.Add(x, y1);
                list2.Add(x, y2);


            }
            LineItem myCurve = myPane.AddCurve("MemoryUsed", list1, Color.Red, SymbolType.Diamond);
            LineItem myCurve2 = myPane.AddCurve("ActiveProcess", list2, Color.Blue, SymbolType.Circle);

            zcg.AxisChange();

Znaci na x osi treba da bude vreme uzorkovanja,y1 broj aktivnih procesa,i to je plava linija. Crvena linija-x osa vreme uzorkovanja,y2-ukupno zauzete memorije.Iz gornjeg primera u textbox-u mi je prikazan broj trenutno aktivnih procesa,i to bi trebalo da je jedan od parametara,tj parametar y1.U datagridview ima kolonu koja prikazuje velicinu zauzete memorije za svaki proces.Kako mogu da saberem sve vrednosti celija iz te kolone i prikazem ih u textbox? I to bi trebalo da mi bude parametar y2...
Potpis
Život je polje svih mogućnosti.
Ono što izaberete to je vaš život.
Re: Pracenje aktivnih procesa i iscrtavanje grafika 04.07.2013. u 23:10 · pre 162 meseca #10
Da ne otvaram novu temu...

Radim nešto sa ZedGraphom pa ispitujem kako radi i na ovom njihovom primeru hoću da mi dugme button1 izmeni neke parametre od grafika čisto da probam, ali skroz iskulira, nije mi jasno zašto... Može li neko od vas iskusnijih da baci oko?

Code:

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            zedGraphControl1.GraphPane.Title.Text = "Sad se zove ovako";
            zedGraphControl1.GraphPane.XAxis.Title.Text = "Nova X osa";


            MessageBox.Show("Radi dugme");
        }
        private void SetSize()
        {
            zedGraphControl1.Location = new Point(308, 58);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //postavi grafik
            CreateGraph(zedGraphControl1);
            SetSize();
        }

        private void CreateGraph(ZedGraphControl zgc)
        {
            GraphPane myPane = zgc.GraphPane;

            //podesavanje naslova
            myPane.Title.Text = "moj graf za testiranje";
            myPane.XAxis.Title.Text = "X osa";
            myPane.YAxis.Title.Text = "Y osa";


            //nizovi podataka
            double x, y1;
            PointPairList list1 = new PointPairList();

            for (int i = 0; i < 36; i++)
            {
                x = (double)i + 5;
                y1 = 1.5 + Math.Sin((double)i * 0.2);
                list1.Add(x, y1);

            }

            //crvena kriva sa dijamant tačkama
            LineItem myCurve = myPane.AddCurve("porshe", list1, Color.Red, SymbolType.Circle);
            myCurve.Line.IsVisible = false;

            zgc.AxisChange();
        }
    }
}
Potpis
rs.ceevee.com/nenad.curcic
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme