سلام دوستان
من یک وب سرویس دارم که خودم نوشتم ،داخل اون یک تابع دارم به نام getDate()
این تابع میاد تاریخ روز رو با فیلد تاریخ در جدول پایگاه داده من چک میکنه،اگر تاریخ برابر بود پیامک ارسال میکنه،
حالا مشکلم اینجاست که چجوری این تابع رو مثلا پنج دقیقه یکبار اجرا کنم در زمان اجرا؟
یعنی مثلا 5 دقیقه یکبار کوئریم میخوام اجرا بشه.چجوری تایمر بزارم،و چجوری در زمان اجرا کار میکنه؟؟
اگر میشه کمکم کنید.
خب شما باید یک thread ایجاد کنی و خاصیت IsBackground اون رو false کنی. وقتی برنامه رو بنندی هم میبینی که برنامه هنوز توی Task Manager هستش و داره کار میکنه.
بیشتر اینکار به درد notification میخوره.
البته باید بتونی هندلش کنی تا وقتی برنامه باز و بسته میشه این thread دوباره ایجاد نشه که واست دردسر درست نکنه.
public static class Job { public static void StartJob() { Thread thread = new Thread(CreateFile); thread.IsBackground = false; thread.Start(); } private static void CreateFile() { int i = 0; while (true) { File.Create(AppDomain.CurrentDomain.BaseDirectory + i++ + ".txt").Close(); Thread.Sleep(2000); } } }
این کد رو با یه برنامه wpf ساده اجرا کن خروجی رو ببین!
یه تروژان نوشتم برات!
/// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Job.StartJob(); } }
سلام،میشه یه sample code واقعی برام بفرستید.
هر کاری میکنم کار نمیکنه.
من میخوام موقعی که برنامهام بستهس هم این job کار کنه.
برنامه رو rebuild کن و برو توی bin/debug برنامه رو اجرا کن و ببند.
بعد میبینی با اینکه برنامه بسته شده اما هر دوثانیه یک بار اونجا داره همینطوری فایل متنی خالی ساخته میشه!
بعد اگه خواستی جلوی اینکار رو بگیری باید بری توی task manager و برنامه رو پیدا کنی و end task رو بزنی و میبینی که دیگه فایل ها ساخته نمیشن.
خب عزیز من پروژهی وب که بسته نمیشه!
بسته هم بشه باز توسط وب سرور (IIS, Nginx, ...) راه اندازی مجدد میشه.
کدی که بهتون دادم روی پروژه ی وب هم کار میکنه. (البته اولین درخواست که ارسال بشه بهش تازه پروژه ی وب شروع به کار کردن میکنه)
اما اگه میخواین اینکار رو تمیزتر انجام بدین از روشی که آقای مدائنی براتون گفتن استفاده کنید. اگه نخواستین کدی که فرستادم هم جواب میده.
موفق باشید.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)