PDA

View Full Version : روش استفاده از timer call back



c#_web
چهارشنبه 05 مهر 1385, 13:03 عصر
با سلام خدمت دوستان عزیز.
در برنامه ام از timer call back استفاده میکنم ولی روش ست کردن شروع و نیز پریود یادآوری را نمیدانم در هنگام new کردن چگونه انجام دهم. اگر امکان دارد مرا راهنمایی کنید.
متشکرم.

SalarSoft
چهارشنبه 05 مهر 1385, 17:58 عصر
برای این کار از تایمر موجود در System.Threading استفاده کنید.



Timer myTimer;
myTimer = new Timer(new TimerCallback(ScheduledWorkCallbackInterval), session["User_10"], 1000*60*60,1000*60*60); //بعد از یک ساعت


private void ScheduledWorkCallbackInterval(object sender)
{

}

نکته اینکه به جای session["User_10"] هر چیزی رو می خواهید این رویداد دریافت کند ارسال بکنید!

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

c#_web
چهارشنبه 05 مهر 1385, 19:49 عصر
از راهنماییتان متشکرم.
پارامترهای 1000*60*60,1000*60*60 چه هستند وکدام پریود است؟
ویک سوال دیگر هم در مورد session[user10]داشتم که این چیست؟
من میخواهم وقتی یک صفحه ای لود میشود در آن صفحه بررسی کند اگر تاریخ امروز با تاریخ در دیتابیس یکی است پس از هر دقیقه، ساعت سیستم را باساعت جاری مقایسه کند و اگر یکی بود در صفحه پیغامی بدهد.
فرموده بودید:
نکته اینکه به جای session["User_10"] هر چیزی رو می خواهید این رویداد دریافت کند ارسال بکنید!
حالا باید چه چیزی را به جای آن قرار دهم.
اگر سوالم ابتدایی است عذرخواهی میکنم زیرا تازه با این شی مفید آشنا شده ام.

mahdi_negahi
چهارشنبه 05 مهر 1385, 20:47 عصر
امیدوارم به درتان بخورد


using System;
using System.Threading;

class TimerExample
{
static void Main()
{
AutoResetEvent autoEvent = new AutoResetEvent(false);
StatusChecker statusChecker = new StatusChecker(10);

// Create the delegate that invokes methods for the timer.
TimerCallback timerDelegate =
new TimerCallback(statusChecker.CheckStatus);

// Create a timer that signals the delegate to invoke
// CheckStatus after one second, and every 1/4 second
// thereafter.
Console.WriteLine("{0} Creating timer.\n",
DateTime.Now.ToString("h:mm:ss.fff"));
Timer stateTimer =
new Timer(timerDelegate, autoEvent, 1000, 250);

// When autoEvent signals, change the period to every
// 1/2 second.
autoEvent.WaitOne(5000, false);
stateTimer.Change(0, 500);
Console.WriteLine("\nChanging period.\n");

// When autoEvent signals the second time, dispose of
// the timer.
autoEvent.WaitOne(5000, false);
stateTimer.Dispose();
Console.WriteLine("\nDestroying timer.");
}
}

class StatusChecker
{
int invokeCount, maxCount;

public StatusChecker(int count)
{
invokeCount = 0;
maxCount = count;
}

// This method is called by the timer delegate.
public void CheckStatus(Object stateInfo)
{
AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
Console.WriteLine("{0} Checking status {1,2}.",
DateTime.Now.ToString("h:mm:ss.fff"),
(++invokeCount).ToString());

if(invokeCount == maxCount)
{
// Reset the counter and signal Main.
invokeCount = 0;
autoEvent.Set();
}
}
}

c#_web
جمعه 07 مهر 1385, 15:57 عصر
با سلام وتشکر از همه دوستان ونیز جناب mahdi_negahi .
کد جناب mahdi_negahi را بررسی کردم.ولی اصلاً متوجه نشدم که اینها را کجا بنویسم و چگونه استفاده کنم؟ من در زمینه استفاده از timer مبتدی هستم لطفاً ، خواهشاً مرا با جزئیات بیشتری راهنمایی کنید.
در داخل windows application برای مثال از یک component بنام timer استفاده کردم.در قسمت property از timer مقدار interval=1000 قرار دادم.یعنی هر ثانیه یکبار.
ونیز داخل لود فرم timer.start() قرار دادم.
ونیز داخل تابع tick از timer کد زیر را نوشتم.


privatevoid timer_Tick(object sender, System.EventArgs e)
{
txt_time.Text=DateTime.Now.ToString();
{

بنابراین هنگام اجرا ، هر ثانیه یکبار مقدار زمان جاری را در تکست میریخت.
اما حالا در وب وقتی یک timer در فرم میگذارم فقط یک تابع بنام Elapsed دارد.که در آن هم اگرهمان کد بالا رابنویسم و در لود صفحه هم timer.start() باز هم هیچ کاری نمیکند.
خواهشاً مرا راهنمایی کنید چه کنم؟
اصلاً از چه کد یا component ی استفاده کنم و چگونه؟

در حقیقت من در برنامه ام میخواهم هر دقیقه یکبار ساعت سیستم را بررسی کرده اگر با ساعت موجود در دیتابیس یکی بود آنگاه پیغامی را به صورت alert بدهد.

حالا خواهشاً مرا راهنمایی کنید چگونه و از چه کدی اینکار را انجام دهم؟؟؟؟
:عصبانی++: :عصبانی++: :گریه:

mahdi_negahi
جمعه 07 مهر 1385, 20:52 عصر
دوست عزیز خوب ملومه که کد شما کار نمیکند چون کد شما باید به سمت سرور برود و نتایج برگردد
کد من فقط مثال جامعی از تاپیک اول شما است

c#_web
شنبه 08 مهر 1385, 11:11 صبح
از لطف و راهنمایی شما متشکرم.
ببخشید من اینگونه سوال پرسیدم. زیرا در این مورد اطلاعاتم خیلی ضعیف است. حالا اگر امکانش هست و در مورد سوال ومشکل اصلی ام که در آخرین تاپیک مطرح کرده ام کسی اطلاعاتی دارد مرا لطفاً راهنمایی کنید.
که از چه طریقی میتوانم برای آن timer ایجاد کنم که هر دقیقه ساعت جاری را با ساعت در دیتابیس مقایسه کند و اگر یکی بود پیامی دهد.:گریه:
خیلی ممنون میشوم.:گریه:

PrinceDotNet
جمعه 14 مهر 1385, 21:50 عصر
میشه پارامترهای Timer رو توضیح بدید.
ممنون