نمایش نتایج 1 تا 6 از 6

نام تاپیک: نحوه ست کردن تایمر برای یک Web Service

  1. #1
    کاربر دائمی آواتار roomezonline
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    ایران زمین
    پست
    326

    Question نحوه ست کردن تایمر برای یک Web Service

    سلام دوستان

    من یک وب سرویس دارم که تعداد لینکهای موجود را بدست میاره و تحت یک string برمیگردونه

    مثلا >>>>> تعداد لینک = 12

    حالا میخوام هر یک ساعت این تعداد لینک رو واسم ایمیل کنه

    من نه در ارسال ایمیل مشکل دارم نه بدست اوردن تعداد لینک


    سوال : نحوه نوشتن یک تایمر برای WEb Service که هر یک ساعت اطلاعات رو دریافت و برای من ایمیل کند.

    لطفا دوستانی که در این زمینه کار کردن کمک کنند

    با تشکر

  2. #2
    کاربر جدید آواتار youngiran
    تاریخ عضویت
    دی 1388
    محل زندگی
    مازندران - نکا - روستای چاله پل
    سن
    36
    پست
    6

    نقل قول: نحوه ست کردن تایمر برای یک Web Service

    چیزی که به ذهن من میرسه این راهه :

    ابتدا زمان آخرین باری که کد اجرا شده رو یه جایی مثلا دیتابیس یا فایل یا ... نگه دارید بعد تو رویداد Session_Start واقع در فایل Global.asax تاریخ آخرین باری که کد اجرا شده رو بگیرید اگه بیشتر از 1 ساعت گذشته بود دوباره تابع مورد نظر تو وب سرویس رو اجرا کنید .

    البته می تونید از یک سری توابع Cache هم استفاده کنید .

    یا علی

  3. #3
    VIP آواتار raziee
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    سن
    35
    پست
    2,208

    نقل قول: نحوه ست کردن تایمر برای یک Web Service

    نقل قول نوشته شده توسط roomezonline مشاهده تاپیک
    سلام دوستان

    من یک وب سرویس دارم که تعداد لینکهای موجود را بدست میاره و تحت یک string برمیگردونه

    مثلا >>>>> تعداد لینک = 12

    حالا میخوام هر یک ساعت این تعداد لینک رو واسم ایمیل کنه

    من نه در ارسال ایمیل مشکل دارم نه بدست اوردن تعداد لینک


    سوال : نحوه نوشتن یک تایمر برای WEb Service که هر یک ساعت اطلاعات رو دریافت و برای من ایمیل کند.

    لطفا دوستانی که در این زمینه کار کردن کمک کنند

    با تشکر
    در مورد Task جستجو کنید.
    قبلا در این باره بحث شده چندین بار.

    اما به طور خلاصه :
    باید بوسیله ی مبحث Cache و Expire شدن اون این کار رو انجام بدی.

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

    public class ScheduledTaskManager
    {
    #region Singleton

    static readonly ScheduledTaskManager instance = new ScheduledTaskManager();

    static ScheduledTaskManager()
    {
    }

    ScheduledTaskManager()
    {
    }

    public static ScheduledTaskManager Instance
    {
    get
    {
    return instance;
    }
    }

    #endregion

    #region Private Fields

    private static CacheItemRemovedCallback OnCacheRemove = null;

    #endregion

    #region Public Methods

    public void AddTask(IScheduledTask task)
    {
    OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);

    HttpRuntime.Cache.Insert(task.Name, task, null,
    DateTime.Now.Add(task.Expiration), Cache.NoSlidingExpiration,
    CacheItemPriority.NotRemovable, OnCacheRemove);
    }

    #endregion

    #region Private Methods

    private void CacheItemRemoved(string k, object v, CacheItemRemovedReason r)
    {
    var task = v as IScheduledTask;
    if (task == null) return;

    task.Run();
    if (!task.IsOnce)
    AddTask((IScheduledTask)v);
    }

    #endregion
    }


    public interface IScheduledTask
    {
    TimeSpan Expiration { get; set; }
    Boolean IsOnce { get; set; }
    String Name { get; set; }
    void Run();
    }



    public class MyTask : IScheduledTask
    {
    #region IScheduledTask Members

    public TimeSpan Expiration
    {
    get;
    set;
    }

    public string Name
    {
    get;
    set;
    }

    public void Run()
    {
    Debug.WriteLine("Running !");

    // Compose a string that consists of three lines.
    string lines = string.Format("Task Name : {0}, runnig on {1}\r\n", this.Name, DateTime.Now);

    // Write the string to a file.
    System.IO.StreamWriter file = new System.IO.StreamWriter("e:\\temp_task.txt", true);
    file.WriteLine(lines);

    file.Close();
    }

    public bool IsOnce
    {
    get;
    set;
    }

    #endregion
    }



    void Application_Start(object sender, EventArgs e)
    {
    // Code that runs on application startup
    var task = new MyTask { Name = "MyTask", Expiration = new TimeSpan(0, 0, 10) };
    ScheduledTaskManager.Instance.AddTask(task);

    //var task2 = new MyTask { Name = "MyTask2", Expiration = new TimeSpan(0, 2, 10) };
    //ScheduledTaskManager.Instance.AddTask(task2);

    //var task3 = new MyTask { Name = "MyTask3", Expiration = new TimeSpan(0, 3, 10) };
    //ScheduledTaskManager.Instance.AddTask(task3);
    }
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  4. #4
    کاربر دائمی آواتار roomezonline
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    ایران زمین
    پست
    326

    نقل قول: نحوه ست کردن تایمر برای یک Web Service

    از زمانی که برای پاسخ سوال من گذاشتید خیلی متشکرم
    اگر امکانش هست در مورد کدها و نحوه استفاده شون که ر کد جی جور و کجا باید استفاده بشه توضیح بدید

  5. #5
    VIP آواتار raziee
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    سن
    35
    پست
    2,208

    نقل قول: نحوه ست کردن تایمر برای یک Web Service

    نقل قول نوشته شده توسط roomezonline مشاهده تاپیک
    از زمانی که برای پاسخ سوال من گذاشتید خیلی متشکرم
    اگر امکانش هست در مورد کدها و نحوه استفاده شون که ر کد جی جور و کجا باید استفاده بشه توضیح بدید
    • ScheduledTaskManager : کلاسی هست برای مدیریت Task ها
    • IScheduledTask : یک Interface هست.
    • MyTask : یک Task نمونه هست که از IScheduledTask مشتق شده. شما هم کلاسی بنویسید که وظیفه ی انجام کار های شما رو داشته باشه. مثل کار با دیتابیس و ...
    • کد هایی هم که در Application_Start نوشته شده برای شروع به کار Task ها هست.

    توجه داشته باشید که مدت زمان انقضاء Cache در واقع زمان اجرای وظایف در پراپرتی Expiration تنظیم خواهد شد.
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  6. #6
    کاربر جدید
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    کرمان
    سن
    38
    پست
    6

    نقل قول: نحوه ست کردن تایمر برای یک Web Service

    سلام راهنمایی تون کاملا درسته
    اما من وقتی از این راه کار می کنم دقیقا سر همون زمان اجرا نمیشه
    یه جورایی حس می کنم رویداد های application_start با Session_Start با هم اجرا می شن
    لطفا کمک کنید

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •