I have got a problem with WMI's Win32_LocalTime:
here is the msdn reference:
http://msdn.microsoft.com/library/en..._localtime.asp
I'D like to have a timer which pass me an event every thursday at 7 am.
I have got a method to produce a querystring to configure this timer
(according to msdn refernce). This method put querystring to an instance of
sysevents class as i described below:
void ProduceQuery()
{
SysEvents eventStart = new SysEvents();
StringBuilder sb = new StringBuilder ();
sb.Append("AND TargetInstance.DayOfWeek=4");
sb.Append(" ");
sb.Append("AND TargetInstance.Hour=7");
sb.Append(" ");
sb.Append("AND TargetInstance.Minute=0");
sb.Append(" ");
sb.Append("AND TargetInstance.Second=0");
eventStart.SetTimerStart (sb.ToString());
eventStart.OnTimerElapsedStart +=new
SysEvents.TimerHandler(eventStart_OnTimerElapsedSt art);
}
private void eventStart_OnTimerElapsedStart(object sender,
EventArrivedEventArgs e)
{
//code goes here
}
Here is the code of SysEvents class:
public delegate void TimerHandler (object sender, EventArrivedEventArgs e);
public event TimerHandler OnTimerElapsedStart;
public void SetTimerStart(string queryString)
{
ManagementEventWatcher w = null;
ManagementOperationObserver observer = new
ManagementOperationObserver();
WqlEventQuery q = new WqlEventQuery ();
q.QueryString = "Select * from
__InstanceModificationEvent Where
TargetInstance
ISA 'Win32_LocalTime' "+queryString ;
w=new ManagementEventWatcher(q);
w.EventArrived +=new EventArrivedEventHandler(w_EventArrived);
w.Start();
}
private void w_EventArrived(object sender, EventArrivedEventArgs e)
{
if(OnTimerElapsedStart != null) OnTimerElapsedStart (sender,e);
}
And it doesn work - I havent got this event at thursday, 7am. If I put
querystring="" sysevents generates events every second ( as described in
msdn).
Does anybody know, why?
Thaks