void ClickAgregarParticion(object sender, RoutedEventArgs e) { //Todo este rollo es para obtener al objeto al que pertenece este boton DependencyObject parent = (sender as Button).TemplatedParent; object aux = VisualTreeHelper.GetParent(parent); aux = VisualTreeHelper.GetParent(aux as DependencyObject); aux = (aux as ListBoxItem).Content; Descarga descarga = (aux as Descarga); if (descarga.Partes.Count == MAXPARTS) { Forms.MessageBox.Show("Ya ha alcanzado el límite de particiones"); return; } if (descarga.Finalizada) { Forms.MessageBox.Show("La descarga ya ha finalizado"); return; } descarga.AgregarParte(false); AgregarParte(descarga.Item.Nombre); }
private void ProcesarLectura(string lectura, TcpClient cliente) { //Verificar que se haya leido algo valido if (lectura == null) { return; } //Primera separacion string[] aux = lectura.Split(Mensajes.SEPARADOR.ToCharArray()); //Verificar si es una solicitud if (aux[1].Equals(Mensajes.SOLICITUD_)) { //Segunda separacion string[] data = aux[2].Split(Mensajes.SEPARADOR_AUX.ToCharArray()); Descarga nueva_descarga = new Descarga(data[0], Int32.Parse(data[1])); nueva_descarga.SetListener(listener_descargas); lock (clientes) clientes[cliente] = nueva_descarga; Thread hilo = new Thread(nueva_descarga.IniciarTransferencia); hilo.SetApartmentState(ApartmentState.STA); hilo.Start(); } else if (aux[1].Equals(Mensajes.ADD_) || aux[1].Equals(Mensajes.REMOVE_)) { string data = aux[2]; foreach (Descarga descarga in clientes.Values) { if (descarga != null) { if (descarga.Item.Nombre.Equals(data)) { if (aux[1].Equals(Mensajes.ADD_)) { descarga.AgregarParte(true); } else if (aux[1].Equals(Mensajes.REMOVE_)) { descarga.EliminarParte(true); } } } } } }
public Particion(Descarga parent, FileStream file_stream, int ID, TcpClient cliente = null) { this.parent = parent; buffer = new byte[BUFFERSIZE]; progreso = 0; velocidad = 0; this.ID = ID; this.file_stream = file_stream; this.cliente = cliente; finalizado = false; }
public Particion(Descarga parent, FileStream file_stream, int inicio, int fin, int ID, TcpListener servidor = null) { this.parent = parent; buffer = new byte[BUFFERSIZE]; progreso = 0; velocidad = 0; this.inicio = inicio; this.fin = fin; this.ID = ID; this.file_stream = file_stream; this.servidor = servidor; finalizado = false; }
//Metodo que maneja el evento del doble click (descarga) void ListArchivosDoubleClick(object sender, RoutedEventArgs e) { Forms.FolderBrowserDialog file_manager = new Forms.FolderBrowserDialog(); file_manager.Description = "Seleccione el lugar donde se guardará el archivo: "; //Si la seleccion es valida if (file_manager.ShowDialog() == System.Windows.Forms.DialogResult.OK) { //Guardar la ruta seleccionada ruta_guardar = file_manager.SelectedPath; Item item = lista_archivos.SelectedItem as Item; //Informacion de la descarga string ruta = item.Ruta; int particiones = 3; //PENDIENTE!! (particiones != 0) if (item != null) { writer.Write(Mensajes.SOLICITUD + Mensajes.SEPARADOR + ruta + Mensajes.SEPARADOR_AUX + particiones); Descarga nueva_descarga = new Descarga(Path.Combine(ruta_guardar, item.Nombre), particiones); descargas.Add(nueva_descarga); ActualizarListBoxDescargas(descargas); Thread hilo = new Thread(nueva_descarga.SolicitarTransferencia); hilo.SetApartmentState(ApartmentState.STA); hilo.Start(); Forms.MessageBox.Show("¡Descarga iniciada!\n" + " Se han creado " + particiones + " particiones por defecto"); } } }