PDA

View Full Version : نحوه بدست آوردن مدت زمان برنامه با thread



baran_bataravat
چهارشنبه 25 خرداد 1390, 14:26 عصر
من يه برنامه دارم داخل دکمه اصلي من 3 تا تابع فراخواني ميشه که هر سه تا با thread هستند حال مي خوام مدت زمان برنامه را بدست بيارم من به اين صورت عمل کردم:

STime_P = DateTime.Now.Ticks;
Thread T_Voice, T_Humidity, T_Air_Quality;
T_Voice = new Thread(new ThreadStart(Voice_Paralell));
T_Humidity = new Thread(new ThreadStart(Humidity_Paralell));
T_Air_Quality = new Thread(new ThreadStart(Air_Quality_Paralell));
T_Voice.IsBackground = true;
T_Humidity.IsBackground = true;
T_Air_Quality.IsBackground = true;
T_Voice.Start();
T_Humidity.Start();
T_Air_Quality.Start();
Edate_p = DateTime.Now.Ticks;
lblTimeP.Text = (Edate_p - Sdate_p).ToString();

اما از اين راه زمان درست بدست نمياد؟
ممنون ميشم اگه کسي راهنمايي کند.

محمد باقری نسب
چهارشنبه 25 خرداد 1390, 14:38 عصر
عزیزم ، اینه راهش:

DateTime start = DateTime.Now;

...

DateTime end = DateTime.Now;
TimeSpan elapsed = end.Subtract(start);
lblTimeP.Text = elapsed.TotalMilliseconds.ToString();

baran_bataravat
شنبه 28 خرداد 1390, 09:27 صبح
ممنون از پاسختون , ولي مشکل من بيشتر در مورد بدست آوردن پايان برنامه هست از اونجايي که من thread استفاده کردم بعد از اينکه سيستم زمان پايان رو ميگيره به کارش ادامه ميده چون ممکن که توابعي که من براشون از thread استفاده کرده باشم تموم نشده باشند. مثلا در کد من edata_p ست ميشه و بعد از آن اجراي برنامه براي توابع ادامه پيدا ميکنه .

محمد باقری نسب
شنبه 28 خرداد 1390, 09:47 صبح
عزیزم شما باید کدی که ذکر شد را در تابع Main برنامه خود قرار بدین. به طوری که قسمت دوم کد هنگام پایان برنامه فراخوانی شود. در این صورت به هر ترتیبی که برنامه و Thread ها به کار خود پایان بدن نتیجه مدت زمان خروجی برابر خواهد بود با مدت زمانی که برنامه شما در حال اجرا بوده است. باز هم اگر متوجه نشدید بگید تا یه نمونه برنامه براتون بگذارم.

haghft
شنبه 28 خرداد 1390, 09:56 صبح
از stopwatch (http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx) استفاده کن.

baran_bataravat
یک شنبه 29 خرداد 1390, 08:44 صبح
عزیزم شما باید کدی که ذکر شد را در تابع Main برنامه خود قرار بدین. به طوری که قسمت دوم کد هنگام پایان برنامه فراخوانی شود. در این صورت به هر ترتیبی که برنامه و Thread ها به کار خود پایان بدن نتیجه مدت زمان خروجی برابر خواهد بود با مدت زمانی که برنامه شما در حال اجرا بوده است. باز هم اگر متوجه نشدید بگید تا یه نمونه برنامه براتون بگذارم.

من کد رو تو main گذاشتم ممنون ميشم اگه با يه مثال برام توضيح بدهيد.