PDA

View Full Version : حرفه ای: اجرا شدن یک تابع بعد از تغییر تاریخ سیستم



سعید کشاورز
دوشنبه 16 بهمن 1391, 00:20 صبح
سلام دوستان...
یه تابع دارم که می خام در صورتی که تاریخ سیستم تغییر کرد اون تابع اجرا بشه..
مسلما ساعت 00:00 تاریخ عوض میشه.حالا می خام اگه سیستم کاربر تاریخش عوض شد تابع مورد نظر اجرا بشه
پیشنهادتون چیه واسه این کار؟

danialafshari
دوشنبه 16 بهمن 1391, 00:37 صبح
سلام
با یک تایمر و تابع datetime میتونی چک کنی
قبلا همچین چیزی گذاشتم، جستجو کن

سعید کشاورز
دوشنبه 16 بهمن 1391, 00:56 صبح
سلام
با یک تایمر و تابع datetime میتونی چک کنی
قبلا همچین چیزی گذاشتم، جستجو کن
سلام ...نمونه کدی داری که بدون تایمر این کار انجام بشه؟

ferankyy
دوشنبه 16 بهمن 1391, 19:02 عصر
یکی از رویداد های SystemEvent مربوط به تغییر تاریخ و ساعت سیستم هست ، میتونی اون رویداد رو هندل کنی

سعید کشاورز
سه شنبه 17 بهمن 1391, 13:21 عصر
یکی از رویداد های SystemEvent مربوط به تغییر تاریخ و ساعت سیستم هست ، میتونی اون رویداد رو هندل کنی

سلام..میشه یه نمونه کد بزارین که وقتی تاریخ سیستم عوض شد یه MessageBox نشون بده؟

the king
سه شنبه 17 بهمن 1391, 15:53 عصر
سلام..میشه یه نمونه کد بزارین که وقتی تاریخ سیستم عوض شد یه MessageBox نشون بده؟


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
Microsoft.Win32.SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);
}

void SystemEvents_TimeChanged(object sender, EventArgs e)
{
MessageBox.Show("Time Changed!");
}
}

سعید کشاورز
چهارشنبه 18 بهمن 1391, 18:16 عصر
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
Microsoft.Win32.SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);
}

void SystemEvents_TimeChanged(object sender, EventArgs e)
{
MessageBox.Show("Time Changed!");
}
}


واقعا ممنونم از پاسختون..
الان یه مشکلی هست اونم اینکه وقتی تاریخ سیستم عوض میشه MessageBox رو نشون نمیده..
اگه خودم به صورت دستی تاریخ رو عوض کنم MessageBox رو نشون میده..اونم 2بار نشون میده..
مشکل کار کجاست؟

the king
چهارشنبه 18 بهمن 1391, 18:59 عصر
واقعا ممنونم از پاسختون..
الان یه مشکلی هست اونم اینکه وقتی تاریخ سیستم عوض میشه MessageBox رو نشون نمیده..
اگه خودم به صورت دستی تاریخ رو عوض کنم MessageBox رو نشون میده..اونم 2بار نشون میده..
مشکل کار کجاست؟

این وقفه مرور زمان نیست، وقفه تغییر دادن ساعت سیستم ئه. کاری نداره که تا یک لحظه قبل دوشنبه بود و حالا شد سه شنبه.
فقط موقعی رخ میده که ساعت سیستم توسط کاربر یا نرم افزاری تغییر داده بشه. برای کاربرد مورد نظر شما همون تایمر
مناسب تره.

سعید کشاورز
چهارشنبه 18 بهمن 1391, 19:18 عصر
این وقفه مرور زمان نیست، وقفه تغییر دادن ساعت سیستم ئه. کاری نداره که تا یک لحظه قبل دوشنبه بود و حالا شد سه شنبه.
فقط موقعی رخ میده که ساعت سیستم توسط کاربر یا نرم افزاری تغییر داده بشه. برای کاربرد مورد نظر شما همون تایمر
مناسب تره.
اگر یه تایمر داشته باشم که هر دقیقه بیاد این دستور رو چک کنه. مشکلی پیش نمیاد؟ سرعت سیستم پایین نمیاد؟ یا حالا هر مشکل دیگه ای..

vahid2112
چهارشنبه 18 بهمن 1391, 19:41 عصر
این وقفه مرور زمان نیست، وقفه تغییر دادن ساعت سیستم ئه. کاری نداره که تا یک لحظه قبل دوشنبه بود و حالا شد سه شنبه.
فقط موقعی رخ میده که ساعت سیستم توسط کاربر یا نرم افزاری تغییر داده بشه. برای کاربرد مورد نظر شما همون تایمر
مناسب تره.

واقعا سوال منم همینه:
اگر یه تایمر داشته باشم که هر دقیقه بیاد این دستور رو چک کنه. مشکلی پیش نمیاد؟ سرعت سیستم پایین نمیاد؟ یا حالا هر مشکل دیگه ای؟

the king
چهارشنبه 18 بهمن 1391, 21:10 عصر
واقعا سوال منم همینه:
اگر یه تایمر داشته باشم که هر دقیقه بیاد این دستور رو چک کنه. مشکلی پیش نمیاد؟ سرعت سیستم پایین نمیاد؟ یا حالا هر مشکل دیگه ای؟

بستگی داره که روال چک کردن تون در چه حدی باشه، اگه در حد مقایسه کردن زمان فعلی با یک مقدار یه، نه، ابدا، پردازش رخداد اون تایمر شما، اونم
هر دقیقه یکبار در مقایسه با عملیاتی که پردازنده در هر لحظه انجام میده هیچ ئه. برای اینکه بهتر این مساله رو ببینید یکبار نرم افزار Process Monitor رو اجرا کنید.
فعالیت هایی که در سیستم فایل و Registry ویندوز رخ میده رو به شما گزارش می کنه، تعداد گزارش های لحظه ای که نشون تون میده فوق العاده زیاده.
ببینید در هر ثانیه فقط حدود هزار تا عملیات Registry و File انجام میشه، اونم وقتی که هنوز هیچ کار خاصی انجام نمی دهید، پیغام هایی که پنجره ها به هم
ارسال می کنند بماند. اینها کارهایی است که پردازنده داره انجام میده اما شما احساس اش نمی کنید، دلیل اش قدرت پردازنده است، این روال چک کردن
شما در Timer برای پردازنده چیزی نیست که روی کاراییش تاثیر بذاره.

ProcessMonitor.zip (http://download.sysinternals.com/files/ProcessMonitor.zip)

Process Monitor v3.03 (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx)