namespace Watki_Cwiczenia
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
Thread watek1 = new Thread(UzupelnijListe);
watek1.Start();
}
private void listBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
private void button_Click2(object sender, RoutedEventArgs e)
{
Thread watek2 = new Thread(UzupelnijListe2);
watek2.Start();
}
private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
public void UzupelnijListe()
{
int licznik = 0;
for (int i = 0; i < 100000; i++)
{
try
{
licznik++;
if (licznik > 10)
{
listBox.Dispatcher.Invoke(delegate { listBox.Items.Clear(); });
licznik = 0;
}
listBox.Dispatcher.Invoke(delegate { listBox.Items.Add("Item " + i.ToString()); });
}
catch (Exception e)
{
System.Windows.MessageBox.Show("Anulowano, poniżej opis wyątku: \n \n" + e);
break;
}
}
}
public void UzupelnijListe2()
{
int licznik = 0;
for (int i = 200; i < 30000; i++)
{
try
{
licznik++;
if (licznik > 10)
{
listBox1.Dispatcher.Invoke(delegate { listBox1.Items.Clear(); });
licznik = 0;
}
listBox1.Dispatcher.Invoke(delegate { listBox1.Items.Add("Item " + i.ToString()); });
}
catch (Exception e)
{
System.Windows.MessageBox.Show("Anulowano, poniżej opis wyątku: \n \n" + e);
break;
}
}
}
}
}
Proszę nakierować mnie jaki robię błąd w tej aplikacji. Chcę sobie poćwiczyć wielowątkowość. Program niby działa, obydwie listy uzupełniają się "niezależnie" ale podczas tych operacji program tnie się, chodzi ale niepłynnie.