PDA

View Full Version : حرفه ای: تایمر سرور ساید در ASP.NET



hamidshahram
جمعه 26 شهریور 1389, 13:02 عصر
تایمر سرور ساید در ASP.NET
سلام من یه مشکل خیلی بزرگ دارم من خودم برنامه نویس وب سایت هستم با سی شارپ هم کار می کنم ولی یه مشکلی دارم که نمی تونم حلش کنم اونم اینکه که یه سایت نوشتم که اطلاعات یه سری افراد در اون ذخیره میشه حالا یه تیکه کد باید بنویسم که طرف سرور هر چند لحظه دیتابیس رو چک کنه اگه ردیف جدیدی وجود داره اطلاعاتش رو دربیاره و اس ام اس کنه همه چی رو نوشتم ولی با این تایمره مشکل دارم چون وقتی راش میندازم می بینم متدی Elaapsed اون چند بار اجرا میشه بعد اجرا نمیشه باز دوباره خودبخود راه می افته من تعریف کردم اینطوری :

System.Threading.Timer threadingTimer = new System.Threading.Timer(newTimerCallback(timer_Tick ), HttpContext.Current, 0, 300000);
Application["Timer"] = threadingTimer;
messages.Text = "این سرویس با موفقیت فعال شد.";
}

protectedvoid timer_Tick(object sender)
{
lock (runningLock)
//{
try
{
//database operation
}
/////


ولی نمی دونم چرا این timer_Tick چند بار کار می کنه دوباره کار نمیکنه باز دوباره خودکار کار می کنه در حالیکه من که تایمر رو تعریف کردم پس چرا همیشه IIS نمی ره به این متد من سر بزنه و اون رو اجرا کنه



این رو هم بدونید ما تحت وب و طرف سرور سه نوع تایمر می تونیم استفاده کنیم

System.Timers.Timer (http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx)
System.Web.UI.Timer (http://msdn.microsoft.com/en-us/library/system.web.ui.timer.aspx)
System.Threading.Timer (http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx)
من هر سه تا رو استفاده کردم ولی نمی دونم چرا متد من رو توی اون زمان هایی که تعریف کردم اتوماتیک اجرا نمی کنه مشکل کار من چیه به چی برمیگرده؟

mmnoody2006
شنبه 27 شهریور 1389, 21:30 عصر
Private Shared _lastNotificationTime As DateTime

Public Shared Property LastNotificationSent() As DateTime
Get
Return _lastNotificationTime
End Get
Set(ByVal value As DateTime)
SyncLock _notificationLock
_lastNotificationTime = value
End SyncLock
End Set
End Property


Public Sub Application_Start(ByVal sender As [Object], ByVal e As EventArgs)
' set-up maintenance timer
_lastNotificationTime = DateTime.Now
Dim callback As TimerCallback = AddressOf Maintenance.HourlyMaintenanceTimer
Dim _hourlyTimer As New Timer(callback, Nothing, TimeSpan.Zero, TimeSpan.FromHours(1.0))
End Sub

persian_bigboy
شنبه 27 شهریور 1389, 21:57 عصر
یه توضیح هم بدک نیست !!!!!!!!!!!!!! کمی آدم باید فکر کنه تا بفهمه چیشه .

mmnoody2006
یک شنبه 28 شهریور 1389, 01:31 صبح
این یه نوع تایمر هست که در application start قرار می گیره

مگه فکرکردن خیلی سخته

hamidshahram
پنج شنبه 01 مهر 1389, 19:11 عصر
با سلام
اول اینکه با سی شارپ بنویسید و بعدش اینکه کد رو کامل بنویسید چون اصلا برام مفهوم نبود منتظرم

persian_bigboy
پنج شنبه 01 مهر 1389, 22:28 عصر
راستش ، انقدر ما خودمون فکر داریم که دیگه فکر اضافه ممنوع هستش . ولی اگه لطف کنی توضیح بدی و نحوه عملکر رو کامل بگی خیلی خوبه . مرسی
--------------------
راستی دوست من ، میتونی تمام کدها رو اینجا به انواع مختلف تبلید کنی

http://converter.telerik.com/
دیگه مشکلی تو وی بی و سی شارپ نداری . فقط منطق

hamidshahram
جمعه 02 مهر 1389, 10:10 صبح
سلام من امروز یه جوابی رو برام فرستادن چک کردم درست بود شما هم بررسی کنید
http://www.codeproject.com/KB/aspnet/ASPNETService.aspx (http://www.codeproject.com/KB/aspnet/ASPNETService.aspx)

mmnoody2006
جمعه 02 مهر 1389, 10:16 صبح
از اونجایی که همه فکر زیاد دارن این چند تا منبع رو ببین شاید فرجی شد !


http://forums.asp.net/p/1187287/2031395.aspx

http://www.c-sharpcorner.com/UploadFile/rizialagesann/servertimercallback11172006093742AM/servertimercallback.aspx

hamidshahram
یک شنبه 25 مهر 1389, 21:06 عصر
البته نمی دونم چرا بازم درست کار نمی کنه کسی نیست یه کمکی بکنه

ricky22
یک شنبه 25 مهر 1389, 23:40 عصر
سلام به نظرتون query notification بهتر نیست؟