//Proves del metode boto per fer busquedas simultaneas private async void btnParaules_Click(object sender, RoutedEventArgs e) { //trencar el string en dos, retornarem un bool per saber si esta be trencat en cas si //anirem a un metode pasant informacio per tal de saber que el control estabe //sino posarem un msg box que no s'ha pugut fer la feina //bloquem el que es l'interfice que esta utilitzan y fa la feina pero no la resta parallelWork.Content = "Treball parallel en proces"; btnparallel.IsEnabled = false; btnParaules.IsEnabled = false; try { //obtenim el string del text box y li fem un tractament als seus camps var selecio = buscarParaules.Text.ToString(); var subSelecio = Metodes.Splitear(selecio); int v = Metodes.ComprovacioPrimerCaracter(subSelecio[0]);//retorna un int per mirar si la condicio //esta ben posada //per fer la pausa var control = Task <string> .Factory.StartNew(() => Metodes.Pausas()); await control; //Iniciem el rellotge, compte amb el start i amb el Restart clock.Restart(); switch (v) { case 0: control1.ItemsSource = await Metodes.mostrarPerSelecioParallel(subSelecio[1], v); break; case 1: control1.ItemsSource = await Metodes.mostrarPerSelecioParallel(subSelecio[1], v); break; case 2: control1.ItemsSource = await Metodes.mostrarPerSelecioParallel(subSelecio[1], v); break; default: MessageBox.Show("La condicio del TB no es l'adecuat per fer la feina \n recorda [country,gender,company]"); break; } //Finalitzem el rellotge i mostrem el temps al lavel corresponent clock.Stop(); tempsAsyn.Content = "Temps[" + clock.Elapsed.TotalMilliseconds.ToString() + "]segons"; } catch (Exception) { MessageBox.Show("Wops!!! alguna cosa no acaba de funcionar"); } //mostrem finalitzat el treball del buto i reactivem el boto parallelWork.Content = "Treball parallel finalitzat"; btnparallel.IsEnabled = true; btnParaules.IsEnabled = true; }
//event del click per fer busquedas asincoronas de manera paralela, aquet metode depent del //index del combo box y de quin es el camp per el que volem fer la busqueda(pais-aquest,gendre-aques) //ames tenim un clock y utils per fer la interface mes digna alhora de fer la feina sigui mes coherent private async void click_Async(object sender, RoutedEventArgs e) { //bloquem el que es l'interfice que esta utilitzan y fa la feina pero no la resta parallelWork.Content = "Treball parallel en proces"; btnparallel.IsEnabled = false; try{ var selecio = buscar.SelectedItem.ToString(); int v = comboOpcions.SelectedIndex; var control = Task <string> .Factory.StartNew(() => Metodes.Pausas()); await control; // tempsSeque.Content = control.Result.ToString(); //var selecio = buscar.SelectedItem.ToString(); //Iniciem el rellotge, compte amb el start i amb el Restart clock.Restart(); switch (v) { case 0: control1.ItemsSource = await Metodes.mostrarPerSelecioParallel(selecio, v); break; case 1: control1.ItemsSource = await Metodes.mostrarPerSelecioParallel(selecio, v); break; case 2: control1.ItemsSource = await Metodes.mostrarPerSelecioParallel(selecio, v); break; } //Finalitzem el rellotge i mostrem el temps al lavel corresponent clock.Stop(); tempsAsyn.Content = "Temps[" + clock.Elapsed.TotalMilliseconds.ToString() + "]segons"; } catch (Exception) { MessageBox.Show("No tens ningun camp selecionat per fer la busqueda"); } //mostrem finalitzat el treball del buto i reactivem el boto parallelWork.Content = "Treball parallel finalitzat"; btnparallel.IsEnabled = true; }