مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

akbaraliyari

عضویت از 1394/11/20

سوال در مورد وب سرویس

  • چهارشنبه 30 آبان 1397
  • 16:42
تشکر میکنم

سلام دوستان

من یک وب سرویس دارم که خودم نوشتم ،داخل اون یک تابع دارم به نام getDate()

این تابع میاد تاریخ روز رو با فیلد تاریخ در جدول پایگاه داده من چک میکنه،اگر تاریخ برابر بود پیامک ارسال میکنه،

حالا مشکلم اینجاست که چجوری این تابع رو مثلا پنج دقیقه یکبار اجرا کنم در زمان اجرا؟

یعنی مثلا 5 دقیقه یکبار کوئریم میخوام اجرا بشه.چجوری تایمر بزارم،و چجوری در زمان اجرا کار میکنه؟؟

اگر میشه کمکم کنید.

پاسخ های این پرسش

تعداد پاسخ ها : 7 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 30 آبان 1397
  • 16:49
کاربر سایت

akbaraliyari

عضویت از 1394/11/20

  • چهارشنبه 30 آبان 1397
  • 17:55
سلام مجدد در صورتی که برنامه بسته باشد،این روش کار میکند؟ من زمانی که پروژه حتی بسته است،میخوام این زمانبندی به صورت خودکار طبق زمانبندی که بهش میدیم انجام بشه.
کاربر سایت

salman_b

عضویت از 1396/02/18

  • چهارشنبه 30 آبان 1397
  • 20:47

خب شما باید یک 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();
        }
    }

کاربر سایت

akbaraliyari

عضویت از 1394/11/20

  • چهارشنبه 30 آبان 1397
  • 21:36

سلام،میشه یه sample code واقعی برام بفرستید.

هر کاری میکنم کار نمیکنه.

من میخوام موقعی که برنامه‌ام بسته‌س هم این job کار کنه.

کاربر سایت

salman_b

عضویت از 1396/02/18

  • چهارشنبه 30 آبان 1397
  • 22:13

برنامه رو rebuild کن و برو توی bin/debug برنامه رو اجرا کن و ببند.

بعد میبینی با اینکه برنامه بسته شده اما هر دوثانیه یک بار اونجا داره همینطوری فایل متنی خالی ساخته میشه!

بعد اگه خواستی جلوی اینکار رو بگیری باید بری توی task manager و برنامه رو پیدا کنی و end task رو بزنی و میبینی که دیگه فایل ها ساخته نمیشن.

فایل های ضمیمه

کاربر سایت

akbaraliyari

عضویت از 1394/11/20

  • پنجشنبه 1 آذر 1397
  • 06:41
من همین کار رو انجام میدم، یه سوال دیگه،پروژه من وب هست،و میخوام این حالت رو رو پروژه وبم پیاده کنم،بعد از اینکه پروژه ام رو پابلیش کردم،این کار رو انجام میده؟ یعنی بازم هر دوثانیه یکبار کاری که بهش گفتیم رو انجام میده؟
کاربر سایت

salman_b

عضویت از 1396/02/18

  • پنجشنبه 1 آذر 1397
  • 09:05

خب عزیز من پروژه‌ی وب که بسته نمیشه!

بسته هم بشه باز توسط وب سرور (IIS, Nginx, ...) راه اندازی مجدد میشه.

کدی که بهتون دادم روی پروژه ی وب هم کار میکنه. (البته اولین درخواست که ارسال بشه بهش تازه پروژه ی وب شروع به کار کردن میکنه)

اما اگه میخواین اینکار رو تمیزتر انجام بدین از روشی که آقای مدائنی براتون گفتن استفاده کنید. اگه نخواستین کدی که فرستادم هم جواب میده.

موفق باشید.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)