סרביס וטיימרים

thinking8

New member
סרביס וטיימרים

אני בונה SERVICES שמקבל הודעות בפורמט של XML מה MSMQ.
אני רוצה לבנות אירועים מבוססי זמן (מגיעים מניתוח ה XML), כל פעם שקורה EVENT, אני מבצע פעולה מסויימת, ומעדכן את ה הזמן הבא לביצוע וחוזר חלילה.
בהתחלה עבדתי עם TIMER של THREADS, הסתבכתי שם קצת, ואז עברתי ל TIMER של SYSTEM.TiMERS.
כחלק מהקריאה ל EVENT אני מעוניין להעביר לו CLASS שמכיל את ה XML המקורי, שדות שבוצע להם סריליזציה מה XML, וכן REFRENCE ל טיימר עצמו על מנת שאוכל לשנות את הזמן הבא.
 

thinking8

New member
זה הקוד (החלק הרלוונטי)

השגיאה מתקבלת על השורה _timer.Elapsed += (sender, e) => SchedularCallback( ct);
איפה הבעיה ואשמח להערות כמובן תודה
private void ParseXml(string xml, Stream ms) { int intervalMinutes = 15; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xml); string name = xmlDoc.SelectSingleNode("//name").InnerText; if (dicTimers.ContainsKey(name)) { DateTime scheduledTime = DateTime.Now.AddMinutes(intervalMinutes); TimeSpan timeSpan = scheduledTime.Subtract(DateTime.Now); double dueTime = Convert.ToInt32(timeSpan.TotalMilliseconds); dicTimers[name]._timer.Stop(); dicTimers[name]._timer.Interval = dueTime; dicTimers[name]._timer.Start(); } else { classs1 cS = Serialize(xml); DateTime scheduledTime = CalculateNextSchedule(xmlDoc); System.Timers.Timer _timer = new System.Timers.Timer(); cTimer cT = new cTimer(_timer, xmlDoc.InnerXml, cS); _timer.Elapsed += (sender, e) => SchedularCallback( ct); scheduledTime = DateTime.Now; TimeSpan timeSpan = scheduledTime.Subtract(DateTime.Now); int dueTime = Convert.ToInt32(timeSpan.TotalMilliseconds); dicTimers.Add(name, cT); } }private void SchedularCallback(cTimer ct) { string x = "1"; }
 

marvin2

New member
לא כלכך ברור מה שאתה מנסה לעשות

אבל באופן כללי להעביר טימירים ו XML בתור EVENTARGS נשמע כמו רעיון רע שיביא לך הרבה צרות בהמשך.
&nbsp
במידה ואתה צריך מערכת לתזמון משימות - תשתמשת באחת מוכנה (QURTZ.NET היא הסטנדרט לזה, חינמית לחלוטין ועושה את העבודה)
 
למעלה