اجرای تکه کد قبل از خاموش شدن برنامه
سلام اساتید گرامی
من برنامه ای نوشتم که با روشن شدن کامپیوتر اجرا میشه و تا زمانی که سیستم روشنه کابران نمی تونن برنامه رو ببندن.(توسط اجرای کد e.cancel=true در رویداد onloclosing فرم) به محض باز شدن برنامه، فیلدی از دیتابیس true میشه. حالا می خوام قبل از اینکه کامپیوتر خاموش شه این فیلد false شه. لطفا راهنمایی بفرمایید.
با سپاس
نقل قول: اجرای تکه کد قبل از خاموش شدن برنامه
نقل قول:
نوشته شده توسط
tara1367
سلام اساتید گرامی
من برنامه ای نوشتم که با روشن شدن کامپیوتر اجرا میشه و تا زمانی که سیستم روشنه کابران نمی تونن برنامه رو ببندن.(توسط اجرای کد e.cancel=true در رویداد onloclosing فرم) به محض باز شدن برنامه، فیلدی از دیتابیس true میشه. حالا می خوام قبل از اینکه کامپیوتر خاموش شه این فیلد false شه. لطفا راهنمایی بفرمایید.
با سپاس
با استفاده از تسک منیجیر میشه برنامت رو بست . تنها راه اینه که مخفی سازی کنی . اگر علنی باشه خیلی ساده میشه جلوی اجرا برنامه رو گرفت.
و اما پاسخ سوال شما ، میتونی بهش شرط بدی و توی تایم بذاری ، بهش دستوری بدی که اگه procces برنامه در حالت ShutDown بود ، برنامه بسته بشه و یا هر چیز دیگه
گ
نقل قول: اجرای تکه کد قبل از خاموش شدن برنامه
تشکر اما ممکنه راهنمایی کنید چطور می تونم این شرط رو بذارم؟ کدش چیه؟
من این کد ها رو هم در رویداد onclosing فرم برنامم گذاشتم. می خوام برنامه قبل از بسته شدن متغیری در sql رو عوض کنه. اما نه تنها تکه کد sql اجرا نمی شه بلکه ویندوز خاموش نمی شه. در صورتی که به برنامه گفتم فقط در صورتی که user بخواد برنامه رو ببنده بسته نشه در غیر اینصورت قبل از خاموش شدن ویندوز کد sql اجرا بشه و برنامه بسته شه:
private void FrmMessages_FormClosing(object sender, FormClosingEventArgs e) {
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
FrmMessages_Resize(sender, e);
}
else
{
e.Cancel = false;
try
{
SqlCommand cmmd = new SqlCommand("UPDATE TUsername SET Online='F' " +
"WHERE Username='" + sUsername + "'",
conn = new SqlConnection(codes.ReturnConnectionstring()));
conn.Open();
cmmd.ExecuteNonQuery();
conn.Close();
}
catch
{ }
Application.Exit();
Environment.Exit(0);
}
}
نقل قول: اجرای تکه کد قبل از خاموش شدن برنامه
دوست گرامی شما میتونی با عمل هوک این کار رو انجام بدی
نقل قول: اجرای تکه کد قبل از خاموش شدن برنامه
شما احتمالا میخوای ببینی کدم سیستم حاضره کدوم غائب
ببینید قبل از اینکه سیستم خاموش بشه شما بخوای این کار روبکنی شاید سرویس های Sql server زود تر از نرم افزار شما بسته بشن و شما نتو نی به مقصودت برسی یا اگه دیتابیس شبکه باشه شاید شبکه قطع بشه و نتونی ثبت کنی
شمامیتونی یه راه دیگه انتخاب کنی مثلا اگه هر یوزر تو sql server هم یه یوزر داره میتونی لیست یوزر هایی که کانکت هستند رو در بیاری
نقل قول: اجرای تکه کد قبل از خاموش شدن برنامه
نقل قول:
نوشته شده توسط
omid nasri
دوست گرامی شما میتونی با عمل هوک این کار رو انجام بدی
تشکر میشه راهنمایی بفرمایید؟
نقل قول: اجرای تکه کد قبل از خاموش شدن برنامه
نقل قول:
نوشته شده توسط
hamid_hr
شما احتمالا میخوای ببینی کدم سیستم حاضره کدوم غائب
ببینید قبل از اینکه سیستم خاموش بشه شما بخوای این کار روبکنی شاید سرویس های Sql server زود تر از نرم افزار شما بسته بشن و شما نتو نی به مقصودت برسی یا اگه دیتابیس شبکه باشه شاید شبکه قطع بشه و نتونی ثبت کنی
شمامیتونی یه راه دیگه انتخاب کنی مثلا اگه هر یوزر تو sql server هم یه یوزر داره میتونی لیست یوزر هایی که کانکت هستند رو در بیاری
من در یک شرکتی کار میکنم که دیتابیس روی سرور هست و سرور هیچ وقت خاموش نمیشه. حالا چطور میتونم متغیر دیتابیس رو قبل از خاموش شدن سیستم کلاینت عوض کنم؟ البته مشکل اصلی فعلی من اینه که چون به کاربر اجازه ندادم برنامه رو ببنده ، هر دستوری که مینویسم طبق توضیحات قبلا ذکر شده ، کامپیوتر خاموش نمی شه!!
نقل قول: اجرای تکه کد قبل از خاموش شدن برنامه
یه راهش اینه که یه جدول درست کنی با فیلدهای datetime, username و مثلا هر یک دقیقه هر یوزر حضور بزنن
حضورشونم به این صورت که بیان تو جدول datetime رو ثبت کنن
شما یه سلکت بگیر اگه یک یوزر اختلافش بیشتر از یک دقیقه بود یعنی افلاین شده
فقط یه نکته اینکه باید Datetime سرور رو ثبت کنن چون شاید زمان کلاینت ها تنظیم نباشه
نقل قول: اجرای تکه کد قبل از خاموش شدن برنامه
مشکل اصلی من بغیر از تغییر فیلد دیتابیس اینه که چون برنامم در سیستم tray هست، کامپیوتر خاموش نمی شه.
نقل قول: اجرای تکه کد قبل از خاموش شدن برنامه
کسی نمی دونه؟؟!! من هنوز گیرم :-(
نقل قول: اجرای تکه کد قبل از خاموش شدن برنامه
خب من که میگم
کلا الگوریتمو عوض کن
اینطوری که شما میخوای کار کنی اگه برق یه سیستم قطع بشه سیستم نمیتونه فیلدشو تغییر بده و تو گزارشات این سیستم انلاین نشون داده میشه