private void bw_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; startingArg arg = (startingArg)e.Argument; pingClient client = new pingClient(arg.IP, arg.port); pingstats report = new pingstats(); report.pingsSent = 0; report.pingsLost = 0; report.pingTime = 0; if (!client.connect()) { while (true) { if ((worker.CancellationPending == true)) { e.Cancel = true; break; } else { int ret = client.ping(); report.pingsSent += 1; if (ret < 0) { report.pingsLost += 1; } //todo:try new connection else { report.pingTime = ret; } worker.ReportProgress(0, report); report.pingsSent = 0; report.pingsLost = 0; report.pingTime = 0; if (ret > 0 && ret < 60000 / arg.pingPerMin) { Thread.Sleep(60000 / arg.pingPerMin - ret); } if (ret <= 0) { Thread.Sleep(60000 / arg.pingPerMin); } } } client.end(); } else { report.pingsSent = 1; report.pingsLost = 1; worker.ReportProgress(1, report); } }
private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e) { // This method runs on the main thread. pingstats state = (pingstats)e.UserState; if (state.pingsSent > 0) { addToData(state.pingsSent, state.pingsLost, state.pingTime); updateDataPoints(); updateGraph(); } if (state.pingsLost > 0) { alarm(); } if (e.ProgressPercentage == 1) { buttonStartStop.Text = "Start"; } }
private void bw_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; startingArg arg = (startingArg)e.Argument; pingClient client = new pingClient(arg.IP, arg.port); pingstats report = new pingstats(); report.pingsSent = 0; report.pingsLost = 0; report.pingTime = 0; if (!client.connect()) { while (true) { if ((worker.CancellationPending == true)) { e.Cancel = true; break; } else { int ret = client.ping(); report.pingsSent += 1; if (ret < 0) report.pingsLost += 1; //todo:try new connection else report.pingTime = ret; worker.ReportProgress(0, report); report.pingsSent = 0; report.pingsLost = 0; report.pingTime = 0; if (ret > 0 && ret < 60000 / arg.pingPerMin) { Thread.Sleep(60000 / arg.pingPerMin - ret); } if (ret <= 0) Thread.Sleep(60000 / arg.pingPerMin); } } client.end(); } else { report.pingsSent = 1; report.pingsLost = 1; worker.ReportProgress(1, report); } }