PDA

View Full Version : سوال: کار با Process ها



#eafshary#
سه شنبه 24 فروردین 1389, 21:10 عصر
من می خوام یه برنامه بنویسم که کار Task Manager را انجام میده که استفادخ از منابع و پروسس ها را نشان می دهد خودم با کلاس Process کار کردم ولی نمی دونم چه جوری درصد استفاده از cpu و memory رو نشون بدم ممنون میشم راهنمایی کنید

Ehsan.Saradar
سه شنبه 24 فروردین 1389, 21:21 عصر
فکر می کنم خواندن ایم دو مقاله می تواند برای شروع به شما کمک کند :

http://www.codeproject.com/KB/cs/CustomTaskManager.aspx

http://www.codeproject.com/kb/dotnet/perfcounter.aspx

#eafshary#
سه شنبه 24 فروردین 1389, 22:18 عصر
خیلی عالی بود ممنونم فقط تو یه چیز اشکال دارم اونم اینکه می خوام درصد استفاده از cpu و memory رو نشون بدم تو این مقاله یه چیزایی بود ولی درست نفهمیدم اگه امکان داره یه راه ساده تر بگید

#eafshary#
جمعه 27 فروردین 1389, 10:06 صبح
من الان فقط تو یه چیز مشکل دارم چه جوری توی تب application مثل task manager فولدر هایی که باز هستن رو نشون بدم ؟ تو رو خدا یکی جوابمو بده !!!!

#eafshary#
دوشنبه 30 فروردین 1389, 00:22 صبح
میگم ما هم هستیم ها یکی جواب منو نمیده من با کمک آقا احسان پروژه رو انجام دادم اگر دوستان خواستن می تونم آپ کنم . استادمون هم خیلی خوشش اومد بهم گفته اگه بتونی گرافهایی که توی TaskManager وضعیت cpu رو نشون میده توی برنامت به کار ببری پروژه این درس رو نمره کامل میگیری(C#) حالا کسی میتونه در مورد نشون دادن این گرافها کمکم کنه؟

vcldeveloper
دوشنبه 30 فروردین 1389, 03:24 صبح
فقط تو یه چیز اشکال دارم اونم اینکه می خوام درصد استفاده از cpu و memory رو نشون بدم
من نمی دونم چقدر از این چیزها را کلاس Process دات نت براتون پیاده سازی کرده، اما به طور کلی برای اینکه میزان مصرف CPU را به دست بیارید، باید زمان Process را در دو زمان مختلف بخونید. زمان Process در ویندوز با استفاده از تابع GetProcessTime به دست میاد. توی دات نت احتمالا کلاس Process یک Wrapper برای آن ارائه کرده. باید یک بار زمان Process را به دست بیارید، بعد به مدت معینی مکث کنید، سپس زمان Process را برای بار دوم به دست بیارید، اون وقت میزان مصرف CPU به صورت زیر محاسبه میشه:


CPU Usage = ((ProcessTime2 - ProcessTime1) / WaitTime) / 100 / NumberOfProcessors
البته اگر کلاس Process خودش این رو بهتون بده، دیگه نیازی به پیاده سازی خودتان نیست.

برای Memory هم در ویندوز از تابع GetProcessMemoryInfo استفاده میشه، که به احتمال بسیار زیاد کلاس Process این رو براتون Wrap کرده، و نیازی نیست خودتان مستقیما با این تابع API ویندوز کار کنید.


چه جوری توی تب application مثل task manager فولدر هایی که باز هستن رو نشون بدم ؟ تو رو خدا یکی جوابمو بده !!!!
برنامه هایی که در تب Applications از Task Manager لیست میشند، در واقع Processهایی هستند که پنجره داشته باشند، و پنجره اصلی آن ها این چند ویژگی را داشته باشه:


Visible باشه.
Owner نداشته باشه.
Parent نداشته باشه.
Tool Window نباشه.


می تونید لیست پنجره های باز را از سیستم بگیرید، و پنجره هایی که ویژگی های فوق را داشتند، به عنوان Application در تب Applications برنامه خودتان لیست کنید.

می بخشید، من دات نت کار نمی کنم که سورس کد #C بهتون بدم. فقط می تونم به طور کلی راهنمایی تون کنم که این کار چطور انجام میشه. از اینکه دات نت چقدر از این کارها را خودش براتون پیاده سازی کرده، اطلاعی ندارم.