پاسخ: بدست آوردن مدت زمان کارکرد سیستم..؟
نقل قول:
الان متوجه منظورتون شدم. بله فرمایش شما صحیح هستش. اگر در زمان Sleep تایمر رویداد (های) Tick رو از دست بده تنها یک بار رویداد Tick را صدا می زنه و سپس از اول شروع به شمارش می کنه. البته اگر Interval رو کم تر کنید خطای آن چنانی در رخ نخواهد داد. مضافا این که در طول شبانه روز بعید می دونم کاربر 100 بار سیستم رو Sleep کنه و شما 400 دقیقه خطا داشته باشید.
با این حال می تونید با رویداد سیستمی
برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ] زمان Sleep شدن و بیدار شدن سیستم رو متوجه بشید و در صورت وقوع رخداد یک Interval رو از شمارنده تون کم کنید.
شاد باشید
آرمین:11():
سلام
ممنون از شما
برنامه رو به همین صورت نوشتم تا از زمان sleep هم خیالم راحت باشه
در زمان اجرای برنامه uptime +2 میشود (به دلیل اینکه زمان خاموشی مشخص نیست میانگین 4 رو گرفتم)
count هم +1 میشود = تعداد ری استارت یا خاموش شدن
uptime هر چهار دقیقه +4
در حالت Sleep هم uptime -2 می شود (میانگین 4)
به دلیل اینکه در مدت زمان بالا این برنامه مد نظر هست اینترول رو 4 دقیقه گرفتم چون تلورانس 2 دقیقه ای در سال فقط چند ساعت میشه و فقط هر 4 دقیقه منابع سیستم رو در اختیار میگیره
کد:
using System;using System.Windows.Forms;
using System.Timers;
using System.IO;
using Microsoft.Win32;
namespace WindowsApplication3
{
public partial class Form1 : Form
{
int s,c;
string suspend;
public Form1()
{
SystemEvents.PowerModeChanged +=
new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = 240000;
aTimer.Enabled = true;
StreamReader rdc = new StreamReader(Application.StartupPath + "\\count.txt");
c = Convert.ToInt32(rdc.ReadLine());
rdc.Close();
StreamWriter wrc = new StreamWriter(Application.StartupPath + "\\count.txt");
wrc.Write(c += 1);
wrc.Close();
StreamReader rd = new StreamReader(Application.StartupPath + "\\up time.txt");
s = Convert.ToInt32(rd.ReadLine());
rd.Close();
StreamWriter wr = new StreamWriter(Application.StartupPath + "\\up time.txt");
wr.Write(s += 2);
wr.Close();
}
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
StreamWriter wr = new StreamWriter(Application.StartupPath + "\\up time.txt");
wr.Write(s+=4);
wr.Close();
}
private void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
suspend = Convert.ToString(e.Mode);
if (suspend == "Resume")
{
StreamWriter wr = new StreamWriter(Application.StartupPath + "\\up time.txt");
wr.Write(s -= 2);
wr.Close();
}
}
}
}
فایل پروژه هم خدمت شما: ، برای کمکهاتون خیلی ممنون ، اگه نظری هم داشتید ممنون میشم بفرمایید
برای مشاهده این لینک/عکس می بایست عضو شوید !برای عضویت اینجا کلیک کنید ]
با سپاس :give_rose: