PDA

View Full Version : سوال: بسته شدن برنامه بعد از مدتی که کاربر از آن استفاده نمی کند



mehdi0020
دوشنبه 15 آبان 1396, 07:26 صبح
سلام من یه برنامه دارم که تعداد کاربران زیادی با اون کار میکنند میخوام کنترلی رو برنامه داشته باشم که در صورتیکه کاربر مدت زمان مشخصی مثلا 5 دقیقه با نرم افزار کار نکرد برنامه بصورت اتوماتیک کلوز بشه.
ممنون از راهنماییتون.

رامین مرادی
دوشنبه 15 آبان 1396, 08:25 صبح
یه راه سادش اینه که یه تایمر بزار با زمان 1 ثانیه تنظیمش کنی .و یه متغییر سراسری برای شمارنده که با هر بار اجرای تایمر یک عدد به اون اضافه بشه. خب حالا تو تایمر هم چک کن که اگه شمارنده رسید به 300 اونوقت

Application.Exit();

رو اجرا کن.
اما هر جای فرمت که رویداد کلیک اتفاق میافته باید اون شمارنده رو صفر کنی. مثلا رو باتن هات یا رو خود فرمت. یا منوهات.

mehdi0020
دوشنبه 15 آبان 1396, 09:41 صبح
یه راه سادش اینه که یه تایمر بزار با زمان 1 ثانیه تنظیمش کنی .و یه متغییر سراسری برای شمارنده که با هر بار اجرای تایمر یک عدد به اون اضافه بشه. خب حالا تو تایمر هم چک کن که اگه شمارنده رسید به 300 اونوقت

Application.Exit();

رو اجرا کن.
اما هر جای فرمت که رویداد کلیک اتفاق میافته باید اون شمارنده رو صفر کنی. مثلا رو باتن هات یا رو خود فرمت. یا منوهات.
سلام ممنون مشکلم با کنترل عدم استفاده از برنامس راهی جز رویداد کلیک وجود نداره؟؟؟

رامین مرادی
دوشنبه 15 آبان 1396, 10:20 صبح
سلام ممنون مشکلم با کنترل عدم استفاده از برنامس راهی جز رویداد کلیک وجود نداره؟؟؟
میتونید بجای اینکه تو تک تک کلیک ها بنویسید تو رویداد موس اینتر بنویسید. یعنی هر وقت موس وارد فرم شد اون شمارندتون صفر بشه.
مثل کد زیر


private void Form1_MouseEnter(object sender, EventArgs e)
{
t = 1;
}

mehdi0020
دوشنبه 15 آبان 1396, 11:26 صبح
میتونید بجای اینکه تو تک تک کلیک ها بنویسید تو رویداد موس اینتر بنویسید. یعنی هر وقت موس وارد فرم شد اون شمارندتون صفر بشه.
مثل کد زیر


private void Form1_MouseEnter(object sender, EventArgs e)
{
t = 1;
}



این کار هم اگه اشتباه نکنم مثل همون رویداد کلیک میمونه برای هر یک از اشیا باید نوشت

mehdi0020
دوشنبه 15 آبان 1396, 11:30 صبح
ساده تر از رویداد کلیک اینه که تو رویداد اکتیو هر فرم شمارنده رو 0 کنی ولی میخوام بدونم روش فنی تر از این راه هم وجود داره یا نه

mehdi0020
دوشنبه 15 آبان 1396, 11:36 صبح
ساده تر از رویداد کلیک اینه که تو رویداد اکتیو هر فرم شمارنده رو 0 کنی ولی میخوام بدونم روش فنی تر از این راه هم وجود داره یا نه

البته اینم یه مشکل دیگه داره گزارش هاس برنامه من ممکنه چند ساعت طول بکشه و کاربر میتونه گزارش اجرا کنه و بره سراغ یه کار دیگه در اینصورت بعد از مدت زمان مشخص شده برنامه بسته میشه
میشه برای هر گزارش تایمر تایمر متوقف کرد
من دنبال اینم که آیا الگریتم کامپوننت یا.... چیزی وجود داره

رامین مرادی
دوشنبه 15 آبان 1396, 12:31 عصر
البته اینم یه مشکل دیگه داره گزارش هاس برنامه من ممکنه چند ساعت طول بکشه و کاربر میتونه گزارش اجرا کنه و بره سراغ یه کار دیگه در اینصورت بعد از مدت زمان مشخص شده برنامه بسته میشه
میشه برای هر گزارش تایمر تایمر متوقف کرد
من دنبال اینم که آیا الگریتم کامپوننت یا.... چیزی وجود داره
شما میتونید گزارش رو به صورت showdialog() باز کنید.وقبل از باز کردن فرم گزارش تایمر رو خاموش کنید. و بعد از اون باز تایمر رو استارت کنید.به صورت زیر

timer1.Enabled=false;
frmGozaresh f=new frmGozaresh();
f.showDialog();
timer1.Enabled=True;

shahryari
دوشنبه 15 آبان 1396, 16:31 عصر
برای اینکار خود دات نت یه رویداد داره بنام Application.Idle که زمانی که برنامه بیکار میشه، هندل میشه

mehdi0020
چهارشنبه 17 آبان 1396, 07:13 صبح
برای اینکار خود دات نت یه رویداد داره بنام Application.Idle که زمانی که برنامه بیکار میشه، هندل میشه
ممنون دنبال همچین چیزی میگشتم.