private void btnWrite_Click(object sender, EventArgs e) { if (!File.Exists(txtWriteFileName.Text)) { AppendConsoleText($"Error! Cannot read file \"{txtWriteFileName.Text}\"\r\n"); return; } byte[] data; try { data = File.ReadAllBytes(txtWriteFileName.Text); } catch (Exception ex) { AppendConsoleText($"Error! Cannot read file \"{txtWriteFileName.Text}\". {ex.Message}\r\n"); return; } int address = (int)numericWriteStartAddress.Value; UpdateBackgroundWorkerActive(true); WriteWorker writeWorker = new WriteWorker(_rtd, address, data, true); writeWorker.WorkerReportStatus += AppendConsoleText; writeWorker.WriteWorkerFinished += WriteWorkerFinished; writeWorker.Start(); }
private bool Run(CommandProcessorContext context, int writers, int readers, int events) { context.IsAsync(); var created = new AutoResetEvent(false); var done = new AutoResetEvent(false); var coordinator = new Coordinator(context, Producers, events, created, done); coordinator.Start(); var verificationWorkers = new VerificationWorker[readers]; for (int i = 0; i < verificationWorkers.Length; i++) { verificationWorkers[i] = new VerificationWorker(string.Format("verifier {0}", i), coordinator, context.Client.Options.ReadWindow); } var writerWrokers = new WriteWorker[writers]; for (int i = 0; i < writerWrokers.Length; i++) { writerWrokers[i] = new WriteWorker(string.Format("writer {0}", i), coordinator, context.Client.Options.WriteWindow); } foreach (var worker in verificationWorkers) { worker.Start(); } foreach (var worker in writerWrokers) { worker.Start(); } created.WaitOne(); done.WaitOne(); foreach (var worker in verificationWorkers) { worker.Stop(); } foreach (var worker in writerWrokers) { worker.Stop(); } context.Success(); return(true); }