private void OnRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { //Event handler for worker thread completed DoWork (this is on the main thread) try { //Notify user of open reminders if (e.Error == null) { RemindersDataset reminders = (RemindersDataset)e.Result; if (reminders != null && reminders.ReminderTable.Rows.Count > 0) { for (int i = 0; i < reminders.ReminderTable.Rows.Count; i++) { long id = reminders.ReminderTable[i].IssueID; string userID = reminders.ReminderTable[i].UserID; DataRow[] rows = this.mOpenReminders.ReminderTable.Select("IssueID=" + id + " AND UserID='" + userID + "'"); if (rows.Length == 0) { this.mOpenReminders.ReminderTable.ImportRow(reminders.ReminderTable[i]); } } this.mDialog.Show(); } } } catch { } }
//Interface public dlgReminders(ReminderService service, RemindersDataset reminders) { //Constructor InitializeComponent(); this.mService = service; this.mOpenReminders = reminders; this.dgvReminders.DataSource = this.mOpenReminders; }
//Interface public ReminderService() { // this.mReminders = new RemindersDataset(); this.mOpenReminders = new RemindersDataset(); this.mDialog = new dlgReminders(this, this.mOpenReminders); this.mTimer = new System.Windows.Forms.Timer(); this.mTimer.Interval = 15000; this.mTimer.Tick += new EventHandler(OnTick); this.mWorker = new BackgroundWorker(); this.mWorker.DoWork += new DoWorkEventHandler(OnDoWork); this.mWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(OnRunWorkerCompleted); }
private void OnDoWork(object sender, DoWorkEventArgs e) { //Event handler for background worker thread DoWork event; runs on worker thread try { //Find reminders that are ready to be published; marshall to main thread RemindersDataset reminders = new RemindersDataset(); lock (this.mReminders) { DataRow[] rows = this.mReminders.ReminderTable.Select("Time<='" + DateTime.Now.ToString() + "'"); for (int i = 0; i < rows.Length; i++) { reminders.ReminderTable.ImportRow(rows[i]); } } e.Result = reminders; } catch { } }