dziwne działanie programu

0

Witam

Napisałem program do testowania algorytmów sortowania. Program dla losowych danych np 1000 powtarza procedurę sortowania np 20000 razy. Problem jest taki, że już dla takich liczb jak wspomniane 10k i 20k program działa dziwne tzn. "zawiesza się" i nie jest to raczej spowodowane tym, że procesor nie wyrabia. Poniżej zamieszczam kod kluczowej procedury.

            for (i = 0; i < loopCount; i++)
            {
                for (j = 0; j < numbersToSort; j++)
                {
                    numbers[j] = rand.Next();
                }
                comps = 0;
                swaps = 0;
                alg(numbers, ref comps, ref swaps); //algorytm sortujacy
                if (stat.ContainsKey(comps)) stat[comps]++;
                else stat.Add(comps, 1);

                perfomStep();

                if (i == 5000)
                    MessageBox.Show("Hello");
            } 

Warunek if wprowadziłem w celach diagnostycznych. Dla loopCount = 10k oraz i = 5k powinien wyswietlić MessageBox ale tego nie robi, progressBar dojezdza do końca

Czy ma ktoś pomysł co poprawić?

Pozdrawiam

0

masz 1 watek, zgadza sie?

0

Powyższy kod wykonuje się w osobnym wątku.

0

ja bledu nie widze. a jak ustawiasz inne wartosci, tez nie dziala?

0

w takim razie chyba wrócę do c++ bo .NET nie wyrabia

0

dziwisz się...
posortować 5k razy, tablice z 20k elementami, jednak nie banalna ilosć obliczeń.
zobacz zużycie procesora podczas, tego jak aplikacja Ci się "zawiesza", jesli jest 100% to znaczy że ciągle liczy.

0

mowisz ze obliczenia w osobnym watku
to setki razy juz bylo mowione ze nie mozna z takiego watku gmerac bezposredni na gui
tyczy sie to poruszania progressBara i MessageBoxa

uzyj InvokeRequired i Invoke na kontrolce, ktora chce odzwiezac

//q: albo wylacz kontrole crossthread na kontrolkach. poszukaj google+msdn+crossthread+disable, jest taka evil mozliwosc:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1