PDA

View Full Version : سوال: نحوه بدست آوردن لیست Thread های سیستم



ساراساراسارا
یک شنبه 03 آبان 1388, 14:48 عصر
سلام

چه طور مي توان ليستي از تردهاي سيستم را به دست آورد؟

ممنون از راهنماييتون

saied_genius
یک شنبه 03 آبان 1388, 15:53 عصر
ليست thread ها:


using System.Diagnostics;


ProcessThreadCollection threadlist = theProcess.Threads;

foreach(ProcessThread theThread in threadlist){
Console.WriteLine("Thread ID:{0} Priority: {1} Started: {2}", theThread.Id, theThread.PriorityLevel, theThread.StartTime);
}


ليست process ها:



Process[] processlist = Process.GetProcesses();
foreach(Process theprocess in processlist){
Console.WriteLine(”Process: {0} ID: {1}”, theprocess.ProcessName, theprocess.Id);
}



Some interesting properties of the Process object:

p.StartTime (Shows the time the process started)
p.TotalProcessorTime (Shows the amount of CPU time the process has taken)
p.Threads ( gives access to the collection of threads in the process)

ساراساراسارا
دوشنبه 04 آبان 1388, 10:56 صبح
ممنون از کمک خوبتون

يک سوال ديگه، اگر نام تردها را بخوام بايد چه کنم؟ آخه پراپرتي پيدا نکردم.

mer30,mer30,mer30

saied_genius
دوشنبه 04 آبان 1388, 12:43 عصر
الان حضور ذهن ندارم .

ولي براي ترد جاري از کد زير مي توانيد استفاده کنيد.



string threadName = System.Threading.Thread.CurrentThread.Name;


اگر چيزي بيشتر پيدا کردم براتون مي گذارم.

موفق باشيد.

saied_genius
دوشنبه 04 آبان 1388, 12:52 عصر
يک سوال ديگه، اگر نام تردها را بخوام بايد چه کنم؟ آخه پراپرتي پيدا نکردم.



امکان پذير نيست.

يک ProcessThread متشکل از يک يا چند thread داخلي است و مي توان با ID هاي آنها ارتباط داشت.

ولي برعکس امکان پذير است.

يعني شما مي توانيد يک System.Threading.Thread را به يک ProcessThread تبديل کنيد.

موفق باشيد.

ساراساراسارا
دوشنبه 04 آبان 1388, 14:11 عصر
ممنون از توجه و راهنماييتون


چه طور مي تونمSystem.Threading.Thread را به يک ProcessThread تبديل کنم؟

saied_genius
دوشنبه 04 آبان 1388, 15:02 عصر
public static ProcessThread GetProcessThreadFromWin32ThreadId(Int32 threadId) {
if (threadId == 0) threadId = ThreadUtility.GetCurrentWin32ThreadId();
foreach (Process process in Process.GetProcesses()) {
foreach (ProcessThread processThread in process.Threads) {
if (processThread.Id == threadId) return processThread;
}
}
throw new InvalidOperationException("No thread matching specified thread Id was found.");


موفق باشيد.

DataMaster
پنج شنبه 26 آذر 1388, 17:17 عصر
ProcessThreadCollection threadlist = theProcess.Threads;


من این کلاس theProcess رو پیدا نکردم . این کد درسته؟؟؟

saied_genius
پنج شنبه 26 آذر 1388, 17:27 عصر
منظور از theProcess همان process فعلي يا processمد نظر است.

براي مثال process فعلي مي شود:

ProcessThreadCollection threadlist = System.Diagnostics.Process.GetCurrentProcess().Thr eads;
ببخشيد اگر بد نوشته بودم متوجه نشديد.
موفق باشيد.

صادق صدقی
پنج شنبه 26 آذر 1388, 23:22 عصر
منظور از theProcess همان process فعلي يا processمد نظر است.

براي مثال process فعلي مي شود:

ProcessThreadCollection threadlist = System.Diagnostics.Process.GetCurrentProcess().Thr eads;
ببخشيد اگر بد نوشته بودم متوجه نشديد.
موفق باشيد.



سلام
ببخشید یه سوال بد!!!!
می شه بگید تردها چین؟
چه کاربردی دارن و به چه دردی می خورن؟
(لیلی زنه یا مرد)؟
اما واقعا دوست دارم بدونم چین؟

saied_genius
جمعه 27 آذر 1388, 00:23 صبح
توي همين سايت سرچ کنيد مطلب زياد هست.

موفق باشيد.

DataMaster
شنبه 28 آذر 1388, 19:13 عصر
من لیست تردهای یک پروسس رو بدست آوردم
قصد من اینه که یک پروسس رو به حالت معلق یا فعال تغییر وضعیت بدم
روشی وجود داره که بتونم یک پروسس رو غیر فعال کنم؟
یک پروژه با VC دیدم که اینکار رو میکرد ، من زیاد ازش سر در نیاوردم فقط همینو فهمیدم که لیست تردهای یک پروسس رو بدست میاورد و اونها رو غیر فعال می کرد