public void logHoursWorked(object sender, HoursWorkedEventArgs e) { string text = "Adding Hours Worked\n"; text += "EmployeeID: " + e.ID.ToString(); text += ", Hours Worked: " + e.Hours.ToString(); log(text); }
// Called by event whenever a new add hours worked message // appears in the message queue. Notice the signature matches // that requried by System.Event public void addHoursWorked(object sender, HoursWorkedEventArgs e) { Console.WriteLine("In delegate, adding employee hours\r\n"); foreach (Employee employee in m_employees) { if (employee.ID == e.ID) { if (employee.GetType().ToString() == "HourlyEmployee") { HourlyEmployee hourlyEmp = (HourlyEmployee)employee; hourlyEmp.HoursWorked = e.Hours; } } } }
// Drain the queue. public void start() { if (m_employees == null) { return; } // Process all queue messages. while (m_queue.moreMessages() == true) { try { EmployeeMessage msg = m_queue.getNextMessage(); if (msg.MessageType == MsgType.Add) { AddEmployeEventArgs args = new AddEmployeEventArgs( (AddEmployeeMessage)msg); OnAddEmployee(this, args); } else { HoursWorkedEventArgs args = new HoursWorkedEventArgs( (PayrollMessage)msg); OnHoursWorked(this, args); } } catch (Exception e) { m_errLogger.logError(e); } } // Now read one more message to see our custom exception // thrown try { EmployeeMessage msg = m_queue.getNextMessage(); } catch (Exception e) { m_errLogger.logError(e); } }