none
Utilisation de thread RRS feed

  • Question

  • Bonjour à tous,

    Developpant une application en c#, je vous expose mon problème :

    J'ai mon application pricipale qui avant de démarrer tout les composants de mon formulaire : démarre un "splashScreen" via un thread qui dure 5 secondes, ce splashscreen me sert à vérifier si ma connexion à ma base de données est correcte, ... Le problème est que depuis peu, de temps en temps, lorsque je démarre mon projet dans visual studio 2012, j'ai le message d'erreur "Le thread a été abandonné", le projet travaillant avec le framework 4.5, j'ai décidé de le changer en framework 4.0 Client Profile et depuis, pour l'instant plus d'erreur.

    Mais lorsque j'essaie de lancer mon exe depuis une autre machine, l'erreur persiste, voici le code ci-dessous :

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace BeGest
    {
        public partial class BeGest : Form
        {
            public BeGest()
            {
                Thread t1 = new Thread(new ThreadStart(SplashForm));
                t1.Start();
                Thread.Sleep(5000); // 5 seconds
                t1.Abort();
                InitializeComponent();
            }

            private void SplashForm()
            {
                Splashscreen newSplashForm = new Splashscreen();
                newSplashForm.ShowDialog();
                newSplashForm.Dispose();
            }

    Merci d'avance de votre aide.

    Bien à vous.

    mardi 29 janvier 2013 09:47

Réponses

  • Afin que ta abandant de thread soit proprement fait, essaye d'ajouter un ResetAbort()

                try
                {  Splashscreen newSplashForm = new Splashscreen();
                    newSplashForm.ShowDialog();
                    newSplashForm.Dispose();
                }
                catch (ThreadAbortException)
                {
                    Thread.ResetAbort();
                }

    • Marqué comme réponse Laureyns b mardi 29 janvier 2013 12:53
    mardi 29 janvier 2013 12:41
  • Merci de votre réponse. Problème résolu, la durée de mon thread était trop courte pour les opérations a effectuer. Passant d'une machine neuve à une "ancienne" cela change énormement :D.

    Merci de votre aide.

    • Marqué comme réponse Laureyns b mardi 29 janvier 2013 12:53
    mardi 29 janvier 2013 12:53

Toutes les réponses

  • Afin que ta abandant de thread soit proprement fait, essaye d'ajouter un ResetAbort()

                try
                {  Splashscreen newSplashForm = new Splashscreen();
                    newSplashForm.ShowDialog();
                    newSplashForm.Dispose();
                }
                catch (ThreadAbortException)
                {
                    Thread.ResetAbort();
                }

    • Marqué comme réponse Laureyns b mardi 29 janvier 2013 12:53
    mardi 29 janvier 2013 12:41
  • Merci de votre réponse. Problème résolu, la durée de mon thread était trop courte pour les opérations a effectuer. Passant d'une machine neuve à une "ancienne" cela change énormement :D.

    Merci de votre aide.

    • Marqué comme réponse Laureyns b mardi 29 janvier 2013 12:53
    mardi 29 janvier 2013 12:53