private void ImprimeEtiquetaWorker_DoWork(object sender, DoWorkEventArgs e) { List <string> lstMensajes = new List <string>(); Bartender.Messages messages = null; if (e.Argument != null) { // A la función se le puede enviar una sola etiqueta o un listado. Comprobar el tipo del argumento List <Bartender.LabelFormatDocument> lstEtiquetas = new List <Bartender.LabelFormatDocument>(); if (e.Argument.GetType() == typeof(Bartender.LabelFormatDocument)) { lstEtiquetas.Add((Bartender.LabelFormatDocument)e.Argument); } else { lstEtiquetas = (List <Bartender.LabelFormatDocument>)e.Argument; } lock (BartenderEngine) { foreach (Bartender.LabelFormatDocument Etiqueta in lstEtiquetas) { Bartender.Result result = Etiqueta.Print("PesajeWpf", out messages); string messagesString = "Mensajes: "; foreach (Bartender.Message msg in messages) { messagesString += "\n" + msg.Text; } if (result == Bartender.Result.Failure) { // Error en la impresión lstMensajes.AddRange(messages.Select(m => m.Text).ToList()); } } } } ImprimeEtiquetaWorker.ReportProgress(100, lstMensajes); }