/// <summary> /// Sends program to manipulator /// </summary> /// <param name="program"></param> public async void UploadProgram(Program program) { if (!manipulator.Connected) { return; } try { manipulator.Number(program.Name); await Task.Delay(1000); manipulator.New(); await Task.Delay(1000); var lines = program.GetLines(); for (var i = 0; i < lines.Count; i++) { await Task.Delay(500); manipulator.SendCustom(lines[i]); StepUpdate?.Invoke(this, new NotificationEventArgs("Uploading program", i + 1, lines.Count, EventType.LINE_UPLOADED)); } } catch (Exception ex) { Console.Error.WriteLine(ex.Message); } }
/// <summary> /// Sends program to manipulator /// </summary> /// <param name="program">Program to be uploaded to manipulator</param> /// <param name="cancellationToken">Defines task cancellation operation</param> public async Task UploadProgram(Program program, CancellationToken cancellationToken) { if (!manipulator.Connected) { return; } try { manipulator.Number(program.Name); await Task.Delay(1000, cancellationToken); manipulator.New(); await Task.Delay(1000, cancellationToken); var lines = program.GetLines(); for (var i = 0; i < lines.Count; i++) { await Task.Delay(500, cancellationToken); cancellationToken.ThrowIfCancellationRequested(); manipulator.SendCustom(lines[i]); StepUpdate?.Invoke(this, new NotificationEventArgs("Uploading program", i + 1, lines.Count, EventType.LINE_UPLOADED)); } } catch (OperationCanceledException) { // Cancellation does not require handling as method returns immediately after catch clause } catch (Exception ex) { Console.Error.WriteLine(ex.Message); } }