//nunca se puede acceder a elementos de la interfaz directamente desde este metodo, acceder a la interfaz desde otro thread //bloquea la aplicacion private void BackGround_Work(object sender, DoWorkEventArgs e) { #if DEBUG int porc = 0; var totalTimer = new Stopwatch(); totalTimer.Start(); var timer = new Stopwatch(); timer.Start(); #endif bgwBlnOffArgument args = (bgwBlnOffArgument)e.Argument; bgwBlnOffResult results = new bgwBlnOffResult(); if (args.BLnOffEnabled) { //Se crean objetos que contienen las tablas de datos que se necesitan en esta herramienta Colindancias colindancias = new Colindancias(); RSLTE31 R31 = new RSLTE31(args.lnBtsInputs, args.pathR31); R31.completeR31(args.pathSRAN, args.pathFL18, args.pathSRAN2, args.srandividio, args.conFL18); #if DEBUG timer.Stop(); Console.WriteLine("Completar consulta31: " + timer.Elapsed.ToString(@"m\:ss\.fff")); timer.Reset(); timer.Start(); #endif TimingAdvance TA = new TimingAdvance(args.lnBtsInputs, args.pathTA); #if DEBUG timer.Stop(); Console.WriteLine("Sacar Timing Advance: " + timer.Elapsed.ToString(@"m\:ss\.fff")); timer.Reset(); timer.Start(); #endif Exports export = new Exports(TA.GetColumn("LNCEL name"), args.pathSRAN, args.pathFL18, args.pathSRAN2, args.srandividio, args.conFL18); #if DEBUG timer.Stop(); Console.WriteLine("Sacar Exports: " + timer.Elapsed.ToString(@"m\:ss\.fff")); timer.Reset(); timer.Start(); porc = 5; worker.ReportProgress(porc); #endif foreach (DataRow dataRow in export.data.Rows) { colindancias.CheckColin(dataRow, R31); } int a = 0; foreach (DataRow dataRow in R31.NotInExports()) { colindancias.CheckColinsNotInExports(dataRow); } colindancias.AddENBID(); if (args.rellenarLabel) { colindancias.rellenarLabelUnknown(args.pathSRAN, args.pathSRAN2, args.srandividio); } porc = 15; worker.ReportProgress(porc); //Dibujar tablas DataView dv = colindancias.data.DefaultView; dv.Sort = "[HO errores SR] DESC"; colindancias.data = dv.ToTable(); results.colindancias = colindancias.data; results.siteCoordErrors = colindancias.GetSiteCoordErr(); porc = 25; #if DEBUG timer.Stop(); Console.WriteLine("Calcular Colindancias: " + timer.Elapsed.ToString(@"m\:ss\.fff")); timer.Reset(); timer.Start(); #endif //Se calculan las candidatas para BlackListing y para Offset, que quedaran disponibles para la edicion manual del usuario en la interfaz grafica CandidatesBL candBL = new CandidatesBL(colindancias); dv = candBL.data.DefaultView; dv.Sort = "[HO errores SR] DESC"; candBL.data = dv.ToTable(); results.candBl = candBL.data; porc = 50; #if DEBUG timer.Stop(); Console.WriteLine("Calcular candidatas de blacklisting: " + timer.Elapsed.ToString(@"m\:ss\.fff")); timer.Reset(); timer.Start(); #endif CandidatesOFF candOFF = new CandidatesOFF(TA, colindancias, candBL); dv = candOFF.data.DefaultView; dv.Sort = "[HO errores SR] DESC"; candOFF.data = dv.ToTable(); results.candOff = candOFF.data; porc = 75; worker.ReportProgress(porc); #if DEBUG timer.Stop(); Console.WriteLine("Calcular candidatas de offset: " + timer.Elapsed.ToString(@"m\:ss\.fff")); timer.Reset(); timer.Start(); #endif } if (args.prevAnalisysEnabled) { NIR48H nir = new NIR48H(args.lnBtsInputs, args.pathNIR48); results.error = nir.errors; results.nirPlotData = nir.data; #if DEBUG timer.Stop(); Console.WriteLine("Analisis Previo: " + timer.Elapsed.ToString(@"m\:ss\.fff")); #endif } e.Result = results; porc = 100; worker.ReportProgress(porc); #if DEBUG timer.Stop(); totalTimer.Stop(); Console.WriteLine("Tiempo Total: " + totalTimer.Elapsed.ToString(@"m\:ss\.fff")); #endif }