PDA

View Full Version : سوال: اجرای تایمر بعد از خروج از نرم افزار در سی شارپ



Mohammad.J.Fathi
پنج شنبه 12 مهر 1397, 09:46 صبح
درود بر اعضای محترم انجمن.
من یه سوال داشتم. من تو فرمم تو سی شارپ یه تایمر قرار دادم که وقتی یه دکمه کلیک میشه اون تایمر استارت میشه میخوام وقتی یکی نرم افزارو بست اون تایمر غیر فعال نشه و به کارش ادامه بده مثل بازی Clash of Clans که مثلا وقتی یه چیزی رو ارتقا میدی حتی اگه موبایلت رو خاموش هم بکنی اون زمانه از بین نمیره. ناگفته نمونه که نرم افزار برای ویندوزه

farhad_shiri_ex
پنج شنبه 12 مهر 1397, 10:13 صبح
درود بر اعضای محترم انجمن.
من یه سوال داشتم. من تو فرمم تو سی شارپ یه تایمر قرار دادم که وقتی یه دکمه کلیک میشه اون تایمر استارت میشه میخوام وقتی یکی نرم افزارو بست اون تایمر غیر فعال نشه و به کارش ادامه بده مثل بازی Clash of Clans که مثلا وقتی یه چیزی رو ارتقا میدی حتی اگه موبایلت رو خاموش هم بکنی اون زمانه از بین نمیره. ناگفته نمونه که نرم افزار برای ویندوزه

اگر تایمر را درنخ پروسس نرم افزاری که می فرمایید close می کنید باشه که دیگه امکان دسترسی به اون را ندارید که بخواد فعال بمونه صد در صد از بین خواهد رفت.
راه حلش این هست که شما باید یک سرویس ویا یک پروسس دیگه داشته باشید که در پس زمینه در حافظه تایمر را فعال کنه و کنترل همه پروسس هاتون را بر عهده بگیره و به راحتی می تونید هر کدوم از پروسس ها را که خواستی ببندی در هر حالی که تایمر و پروسس اصلی در حال کار هستند و البته اگر سرویس باشه بعد از ریست ویندوز هم قابل اجرای مجدد خواهد بود.
در اندروید هم دقیقا همینطور هست برنامه clash سرویس هایی داره تو نخ های مختلف که حتی پس از ریست گوشی هم با اجرای اندروید تمامی سرویس هاش مجددا اجرا میشن.

حالا اگر بخواهید تو ویندوز از یک پروسس که حتی به صورت سرویس هم نوشتید به پروسس هایی دسترسی پیدا کنید که نقطه اجراشون از پروسس سرویس شما نیستند باید از تکنیک های ریموت متد استفاده کنید که قبلا هم یک نمونه تو همین تالار گذاشته بودم.
به یک نکته توجه داشته باشید انجام دادن این کار خیلی هم راحت نیست به این علت که ویروس کش ها ویا فایروال ویندوز ویا برنامه های detect intrusion software و... برنامه شما را به عنوان یک برنامه مخرب شناسایی میکنند پس بنابراین به این نکته توجه داشته باشید که در زمان اجرا به خطاهای منطقی برخورد کردید از دلایل ایجاد خطاها میتونه همین قضیه ای که عرض کردم باشه.

mr.sirwan
پنج شنبه 12 مهر 1397, 12:29 عصر
درود بر اعضای محترم انجمن.
من یه سوال داشتم. من تو فرمم تو سی شارپ یه تایمر قرار دادم که وقتی یه دکمه کلیک میشه اون تایمر استارت میشه میخوام وقتی یکی نرم افزارو بست اون تایمر غیر فعال نشه و به کارش ادامه بده مثل بازی Clash of Clans که مثلا وقتی یه چیزی رو ارتقا میدی حتی اگه موبایلت رو خاموش هم بکنی اون زمانه از بین نمیره. ناگفته نمونه که نرم افزار برای ویندوزه

شما هیچ نیازی به تایمر نداری، فرض کن توی بازی یک ساختمون رو ارتقا میدی شما باید زمان دقیق شروع عملیات ارتقا رو یه جا ذخیره کنی، وقتی کاربر از برنامه خارج شد و مثلا بعد از یه ساعت دوباره وارد برنامه شد شما زمان حال رو منهای زمان شروع ارتقا میکنی اگه زمان لازم تموم شده بود، همون لحظه لِوِل (level) یا سطح ساختمون رو یه واحد اضافه میکنی و میگی ساختمون ارتقا پیدا کرده، اگر هنوز زمان برای ارتقا به سر نیومده بود حاصل تفریق زمان حال و زمان شروع ارتقا رو به عنوان زمان باقیمانده به کاربر نمایش میدی.
برای باقی کارها هم به همین شکل

Mohammad.J.Fathi
یک شنبه 15 مهر 1397, 12:39 عصر
ممنون از کمکتون اگه میشه کدش رو هم بنویسید

mr.sirwan
یک شنبه 15 مهر 1397, 18:47 عصر
کار با کلاس DateTime هست چیز سختی نیست شما شروع کنین و کارایی که گفتم رو مرحله به مرحله پیش برین، هرجا مشکل داشتین ما کمکتون میکنیم

رامین مرادی
یک شنبه 15 مهر 1397, 21:52 عصر
اینو نگاه کنید. من از ستینگ استفاده کردم برا ذخیره ساعت. میتونید هر جور که دوس دارید ذخیره کنید.
بعد از اجرای برنامه یه بار کلید استارت رو بزنید برنامه بسته میشه دفعه بعد که باز کردید مدت زمان از اخرین فعالیت رو بهتون میده.149052