PDA

View Full Version : سوال: پردازش های در حال اجرا



fakhravari
جمعه 30 فروردین 1392, 22:30 عصر
با سلام چطوری میتونم لیستی از انها را داشته باشم. و بعد بتونم ساعت شروع هر کدوم بگیرم که بتونم برنامه قعط کنم.

esafb52
جمعه 30 فروردین 1392, 23:41 عصر
سلام فکر کنم قسمت اولش رو تو تایپیک هزار و یک نکته دیدم

danialafshari
شنبه 31 فروردین 1392, 06:28 صبح
با سلام چطوری میتونم لیستی از انها را داشته باشم. و بعد بتونم ساعت شروع هر کدوم بگیرم که بتونم برنامه قعط کنم.

سلام
کد زیر کل پروسس ها رو در listbox نشون میده
وقت کافی برای بدست آوردن اطلاعاتش ندارم اگر به نتیجه نرسیدید بعد کمک می کنم
lstProcessName.Items.Clear();
Process[] allp = Process.GetProcesses();
foreach (Process p in allp)
{
lstProcessName.Items.Add(p.ProcessName);
}
موفق باشید

fakhravari
شنبه 31 فروردین 1392, 10:39 صبح
با سلام
چطوری تشخیص بدم هر پردازش چقدر داره از تایم CPU میگیره؟
مثال در هر دقیقه بیشتر 10 ثانیه استفاده نکنه

Mahmoud.Afrad
شنبه 31 فروردین 1392, 13:06 عصر
برای مدت زمانی که از ایجاد پروسس میگذره ، توسط startTime زمان شروع رو بگیر و اختلاف رو با زمان حال بدست بیار. حالا این مدت زمان اگر کمتر از 10 ثانیه بود اختلافشو از همین 10 بدست بیار . این زمان باقی مونده هست که توسط WaitForExit میزاری به کارش ادامه بده. و در انتها kill میکنی. اگر هم کمتر از 10 نبود که kill میشه.
مثال (پروسس NotePad رو در صورتی که از زمان ایجادش 10 ثانیه بگذره ، میبنده):

int lifeTime = 10;
Process proccess = Process.GetProcesses().Where(p => p.ProcessName == "notepad").FirstOrDefault();
if (proccess != null)
{
TimeSpan ts = DateTime.Now - proccess.StartTime;
if (ts.Seconds < lifeTime)
{
int secondCount = lifeTime - ts.Seconds;
proccess.WaitForExit(secondCount * 1000);
}
proccess.Kill();
}

برای تست نت پد را اجرا کنید و بلافاصله این کد رو اجرا کنید.

fakhravari
شنبه 31 فروردین 1392, 13:55 عصر
:لبخند:
p => p.ProcessName == "notepad").FirstOrDefault()
برداشتیم و رفتیم مرحله اخر:خجالت: پوکید

Mahmoud.Afrad
شنبه 31 فروردین 1392, 14:15 عصر
این صرفا مثال بود. منظورم این بود که اول پروسس مورد نظر رو بدست بیارید بعد if رو در موردش اجرا کنید.
کد بالا رو به این صورت هم میشه نوشت:

int lifeTime = 10;
foreach (Process p in Process.GetProcesses())
{
if (p.ProcessName == "notepad")
{
TimeSpan ts = DateTime.Now - p.StartTime;
if (ts.Seconds < lifeTime)
{
int secondCount = lifeTime - ts.Seconds;
p.WaitForExit(secondCount * 1000);
}
p.Kill();
break;
}
}

fakhravari
شنبه 31 فروردین 1392, 20:28 عصر
Process[] processlist = Process.GetProcesses();
listBox1.Items.Clear();
foreach (Process theprocess in processlist)
{
PerformanceCounter counter = new PerformanceCounter("Process", "% Processor Time", theprocess.ProcessName);
listBox1.Items.Add(counter.NextValue());
}

چطوری میتونم از کل پردازش ها بیشترین پردازش ها که از یه عدد معینی بیشتر باشد جدا کنم؟

Mahmoud.Afrad
یک شنبه 01 اردیبهشت 1392, 03:56 صبح
چطوری میتونم از کل پردازش ها بیشترین پردازش ها که از یه عدد معینی بیشتر باشد جدا کنم؟
int time = 10;
foreach (Process p in Process.GetProcesses())
{
try
{
TimeSpan ts = DateTime.Now - p.StartTime;
if (ts.Seconds > time)
{
listBox1.Items.Add(p.ProcessName);
}
}
catch { }
}

ghamgin
یک شنبه 01 اردیبهشت 1392, 11:50 صبح
سلام
چطور میشه فهمید کدوم پروسس جز پروسس های خود سیستم که باید در حال اجرا باشه نیست
یعنی بشه پروسس هایی که خیلی وقت cpu رو میگره ببندیم(یا مثلا برنامه مخرب رو ببندیم)
در ضمن بشه از لیست باکس اون برنامه رو انتخاب و ببندمش)
ممنون میشم راهنمایی کنید

danialafshari
یک شنبه 01 اردیبهشت 1392, 16:22 عصر
kill :
Process[] prs = Process.GetProcesses();


foreach (Process pr in prs)
{
if (pr.ProcessName == listBox1.SelectedItem.ToString())
{
pr.Kill();
}

}

ghamgin
دوشنبه 02 اردیبهشت 1392, 10:35 صبح
سلام
ممنون
فقط
منبعی ندارید که بتونم فایل های سیستمی رو از غیر سیستمی توی لیست تشخیص بدم و ببندم؟
و یا اطلاعاتی دربارش در یک لیبل نشون بدم؟
ممنون بازم

Mahmoud.Afrad
دوشنبه 02 اردیبهشت 1392, 13:06 عصر
سلام
ممنون
فقط
منبعی ندارید که بتونم فایل های سیستمی رو از غیر سیستمی توی لیست تشخیص بدم و ببندم؟
و یا اطلاعاتی دربارش در یک لیبل نشون بدم؟
ممنون بازم
foreach (Process p in Process.GetProcesses())
{
try
{
if (p.MainModule.FileVersionInfo.CompanyName != "Microsoft Corporation")
{
listBox1.Items.Add(p.ProcessName + "\t" + p.MainModule.FileVersionInfo.CompanyName);
}
}
catch
{ }
}
پراپرتی های شئ پروسس (p) را ببینید. بهتون اطلاعاتی درباره پروسس میده