private void LancerPremier(object sender, RoutedEventArgs e)
        {
            Thread t = new Thread(() => {
                NombrePremier windowPremier = new NombrePremier(premierThreadNumber - 1);
                windowPremier.NbPremier();
            });

            t.SetApartmentState(ApartmentState.STA);
            t.Start();
            premierThread.Add(t);
            premierThreadNumber += 1;
            UpdataThreadInfo();
        }
Exemple #2
0
        // Déclenche la création d'un thread 'Premier'.
        private void Premier_Click(object sender, RoutedEventArgs e)
        {
            NombrePremier np = new NombrePremier();

            np.FormClosed += (s, ev) => App.Current.Dispatcher.BeginInvoke(
                new Action(() => Premier_CloseEvent(s, ev)));

            Thread t = new Thread(() => np.ThreadFunction());

            np.threadId = t.ManagedThreadId;
            t.Name      = "Premier";
            t.Start();
            AddThread(t);
        }
Exemple #3
0
        /* --------------- AUXILIARY FUNCTIONS ---------------- */

        // launch a thread with name thread_name,
        // append it to threads list and refresh table
        private void launch_thread(string thread_name)
        {
            void launch_thread_ball()
            {
                WindowBallon b = new WindowBallon();

                b.Show();
                System.Windows.Threading.Dispatcher.Run();
            }

            void launch_thread_prime()
            {
                NombrePremier p = new NombrePremier();

                p.CalculatePrimes();
                System.Windows.Threading.Dispatcher.Run();
            }

            Thread t = (thread_name == BALL_DLL_NAME) ?
                       new Thread(launch_thread_ball) :
                       new Thread(launch_thread_prime);

            t.Name = thread_name;

            // thread must be STA to change UI components
            t.SetApartmentState(ApartmentState.STA);
            t.Start();

            // add exit callback
            // t.EnableRaisingEvents = true;
            // Application.ThreadExit += new EventHandler(child_thread_exited);
            // t.ThreadExit += new EventHandler(child_thread_exited);

            // append thread to list
            threads.Add(t);

            update_listView();
        }
Exemple #4
0
        // Récupération de l'ID du thread afin de le supprimer de la liste d'affichage.
        private void Premier_CloseEvent(object sender, EventArgs e)
        {
            NombrePremier np = (NombrePremier)sender;

            FindDeadThread(np.threadId);
        }