PDA

View Full Version : سوال: خواندن اطلاعات از بانک اطلاعاتی با اسفاده از وقفه



hesam_hma
چهارشنبه 28 تیر 1391, 10:17 صبح
با درود بر همه دوستان
من یه نرم افزار نوشتم که بر اساس ورودی از سخت افزار یه سری اطلاعات رو توی دیتابیس می نویسه ، این نرم افزار تحت شبکه کار میکنه
حالا من می خوام زمانی که یه سیستم توی شبکه اطلاعاتی رو توی دیتابیس نوشت بقیه خودشونو بازخوانی کنند
نکته : استفاده از تایمر خیلی کار جالبی نیست!
متشکرم

ahmadreza517
چهارشنبه 28 تیر 1391, 10:44 صبح
به نام تنها برنامه نویس هستی
سلام ,

استفاده از Timer چرا کار جالب نیست.

از Timer فضای نام System.Threading استفاده کنید.
از Timer فضای نام System.Timers می شه استفاده کرد.
می تونید تنظیم کنید هر چند بار اطلاعات باز خوانی کند.

روتین باز خوانی رو می تونید در قالب یک thread به cpu بفرستید که اطلاعات را هر 10 ثانیه باز خوانی کند.
می تونید اتمام کار را با کلاس AutoResetEvent Class کنترل کنید.
http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx
http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx
http://msdn.microsoft.com/en-us/library/system.threading.autoresetevent.aspx


می تونی از

System.Threading.Thread.Sleep()


استفاده کنی .Thread اصلی برنامه را با مقداری که از وروی می گیره به تاخیر می ندازه.

fjm11100
چهارشنبه 28 تیر 1391, 11:01 صبح
میتونی یک پیام در سطح شبکه Broadcast کنی تا باقی روتین update خودشون را فراخوانی کنند.
این لینک کمکت میکنه
http://codeidol.com/csharp/csharp-network/IP-Multicasting/What-Is-Broadcasting/

Saeed_m_Farid
چهارشنبه 28 تیر 1391, 14:19 عصر
میتونی یک پیام در سطح شبکه Broadcast کنی تا باقی روتین update خودشون را فراخوانی کنند...
بله، بنظر من هم بهتره هر دیوایسی update زد، شما id رکورد(های) جدید / حذفی / آپدیت و ... و اکشن موردنظر رو با UDP به همه دیوایس‌های دیگه Broadcast کنید؛ اینطوری اولاً اکثر کارها در Transport layer (http://en.wikipedia.org/wiki/Transport_layer) انجام میشه و فشار رو برنامه شما نمی‌افته؛ از طرف دیگه، لازم نیست دیوایس‌ها کل جدول(ها) رو هر دفعه بخونن و فقط جدیدها رو می‌گیرن یا حذف می‌کنن و ...

fjm11100
چهارشنبه 28 تیر 1391, 15:19 عصر
یک چیز دیگه هم فقط شنیدم اما کار نکردم. در sqlserver یک سرویس notification وجود داره فکر کنم بشه یک تریگر clr نوشت که خودش این کار broadcast کردن را انجام بده.