// TODO -- This is something like a callback. Maybe a callback is better. private void SubGet_Complete(object sender, AsyncComplete status) { AsyncIO p = (AsyncIO)sender; if (status.Type == AsyncIO.TaskType.Substitutions) { // Cancel the notification p.Complete -= SubGet_Complete; getInProgress = false; // Get the substitution from the packet Src src = (Src)cbSource.SelectedIndex; Subs[(int)src] = status.substitution; // post the data retrieved clearSubstitutions(); loadSubstitutions(Subs[(int)src]); SetButtonEnables(); } }
/// <summary> /// Starts this EnityPoller. /// </summary> /// <exception cref="System.InvalidOperationException">Already polling</exception> public void Start() { var worker = new AsyncWorker(Poll); var completed = new AsyncCallback(PollComplete); var onCompleted = new AsyncComplete(OnEntity); lock (_sync) { if (_polling) { throw new InvalidOperationException("Already polling"); } var operation = AsyncOperationManager.CreateOperation(onCompleted); worker.BeginInvoke(completed, operation); _polling = true; } }
private void AsyncIO_Complete(object sender, AsyncComplete status) { switch (status.Type) { case AsyncIO.TaskType.Connect: if (status.Success) { cmdGetStatus_Click(null, null); } break; case AsyncIO.TaskType.Disconnect: txtPrinterStatus.Text = "Unknown"; txtAnalysis.Text = "Unknown"; break; case AsyncIO.TaskType.Send: DisplayLogTree(status.Resp2); break; case AsyncIO.TaskType.Retrieve: LoadXmlToDisplay(status.Resp1); DisplayLogTree(status.Resp2); break; case AsyncIO.TaskType.WriteData: break; case AsyncIO.TaskType.ReadData: txtData.Text = MB.byte_to_string(status.DataA); break; case AsyncIO.TaskType.IssueccIJP: break; case AsyncIO.TaskType.GetStatus: txtPrinterStatus.Text = status.Resp1; txtAnalysis.Text = status.Resp2; break; case AsyncIO.TaskType.GetMessages: dgMessages.Rows.Clear(); foreach (string s in status.MultiLine) { dgMessages.Rows.Add(s.Split(',')); } break; case AsyncIO.TaskType.GetErrors: lbErrors.Items.Clear(); lbErrors.Items.Add($"There are {status.Value} errors to report!"); lbErrors.Items.AddRange(status.MultiLine); break; case AsyncIO.TaskType.Exit: break; default: break; } SetButtonEnables(); }