Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

c# - kako ubiti prosec koji je dostigao neko određeno zauzeće memorije

[es] :: .NET :: .NET Desktop razvoj :: c# - kako ubiti prosec koji je dostigao neko određeno zauzeće memorije

[ Pregleda: 1252 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

akioki

Član broj: 255624
Poruke: 9
*.static.sbb.rs.



Profil

icon c# - kako ubiti prosec koji je dostigao neko određeno zauzeće memorije21.01.2011. u 22:29 - pre 161 meseci
Napravio sam programčić koji određen proces ubija nakon nekog intervala i ponovo ga pokreće. To mi je bilo potrebno zbog zakucavanja neke aplikacije na sistemu a zakucavanje se desavalo uvek na 4 sata.

Sada mi je potreban program koji ce ubijati aplikaciju ako je njeno zauzeće memorije veće od recimo 50MB. Kako ovo izvesti? Kako da dodjem do informacije koliko je narastao recimo proces "Problematicna_Aplikacija"?

Prva verzija programa izgleda ovako:
Code:

using System;
using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;

namespace kill_process
{

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private void Form1_Load(object sender, EventArgs e)
        {

            
            
            opet:
            Process[] procs = Process.GetProcessesByName("Problematicna_Aplikacija");

            foreach (Process proc in procs)
                proc.Kill();
            Thread.Sleep(5000);
            Process process = Process.Start("Problematicna_Aplikacija.exe");
            Thread.Sleep(10800000);

            goto opet;
            


        }
    }
}


na osnovu ovoga možete videti da sam potpuni početnik pa bi mi i neko lepše rešenje ovog koda stvarno bilo od velike koristi u učenju.

Hvala svima koji su spremni pomoci.
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.evj-kabel.net.



+14 Profil

icon Re: c# - kako ubiti prosec koji je dostigao neko određeno zauzeće memorije23.01.2011. u 15:10 - pre 161 meseci
Property koji tebi treba je proc.WorkingSet64, tamo pise koliki je Private Working Set procesa, tj. kolicina memorije rezervisane za taj proces. I batali GOTO :)

Code (csharp):


...

private volatile bool Terminated = false;
public const int Limit = 50 * 1024 * 1024;

...

while(!Terminated)
{
  Process[] procs = Process.GetProcessesByName("Problematicna_Aplikacija");

  foreach (var proc in procs)
    if (proc.WorkingSet64 >= Limit)
    {
      proc.Kill();
      Thread.Sleep(5000);
      Process.Start("Problematicna_Aplikacija.exe");    
    }
  Sleep(1000);
}
 

if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

akioki

Član broj: 255624
Poruke: 9
*.adsl.eunet.rs.



Profil

icon Re: c# - kako ubiti prosec koji je dostigao neko određeno zauzeće memorije30.01.2011. u 19:06 - pre 161 meseci
Borise, hvala ti puno na pomoci. To je ono sto mi je trebalo.

Da li postoji neki poseban razlog zasto bi trebalo izbegavati "goto"? Svaki savet dobrodosao.
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.zaslon-telecom.si.



+14 Profil

icon Re: c# - kako ubiti prosec koji je dostigao neko određeno zauzeće memorije31.01.2011. u 10:06 - pre 161 meseci
GOTO je dinosaurus iz vremena ne-struktuiranog programiranja, nijedan program od proceduralnih na ovamo ne bi trebao da ga koristi. Uvek postoje struktuirane alternative, sa samo branch i loop konstruktima kao sto su if i for moze da se resi bilo koje izracunavanje ali na struktuirani nacin. Upotreba GOTO-a za izolaciju funkcionalnosti (procedura) je postala obsolete sa pojavom proceduralnih jezika.

Pogledaj npr. vikipediju na temu "goto".
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: c# - kako ubiti prosec koji je dostigao neko određeno zauzeće memorije31.01.2011. u 10:46 - pre 161 meseci
Ne samo da je dinosaurus vec i remeti optimizaciju ILa i native koda koji pomaze bolji branch prediction, sto rezultuje sporjim kodom zbog cestih resetovanja instruction pipeline-a
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

akioki

Član broj: 255624
Poruke: 9
*.static.sbb.rs.



Profil

icon Re: c# - kako ubiti prosec koji je dostigao neko određeno zauzeće memorije31.01.2011. u 11:16 - pre 161 meseci
Sjajno. Obojci se zahvaljujem na pojašnjenju. Ubuduće znam šta mi je činiti.

Hvala.
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: c# - kako ubiti prosec koji je dostigao neko određeno zauzeće memorije

[ Pregleda: 1252 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.