IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

heritage de la classe System.Threading.Thread


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 56
    Points : 35
    Points
    35
    Par défaut heritage de la classe System.Threading.Thread
    salut tout le monde :
    je veux convertir ce bout de code en c#:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class TestIP extends Thread{
          private String ip;
          private String namePC;
          private ScanReseau rootI;
     
          public TestIP(String adresse, ScanReseau mi){
            ip = adresse;
            rootI = mi;
          }
     
          public void run(){
            try {
              namePC = InetAddress.getByName(ip).getHostName().toString();
              if ( ! namePC.startsWith( ip.toString() ))
                rootI.addPoste(namePC,ip);
             }
            catch (Exception ex) {   ex.printStackTrace();  }
          }
       }
    Ma solution proposée était celle là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class TestIP:Thread {
          private String ip;
          private String namePC;
          private ScannReseau rootI;
     
          public TestIP(String adresse, ScannReseau mi){
            ip = adresse;
            rootI = mi;
          }
     
          public void VerifierIP(){
            try {
                namePC = Dns.GetHostByAddress(ip).HostName.ToString();
              if ( ! namePC.StartsWith( ip.toString() ))
                rootI.addPoste(namePC,ip);
             }
            catch (Exception ex) {     }
          }
       }
    Mais mon problème c'est que l'heritage ne se fait pas lorsque je compile l'erreur est :
    TestIP can not derive from sealed type 'System.Threadin.Thread'
    J'ai vraiment besoin de votre aide.MErci d'avance

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 49
    Points : 56
    Points
    56
    Par défaut
    les thread ne fonctionne pas de la meme facon entre java et c#
    msdn-thread

  3. #3
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    La classe Thread ne peut être dérivée (mot clé sealed). Lorsque l'héritage n'est pas possible, la seule solution restante est la composition. Mais une classe statique "utilitaire" avec une méthode pour vérifier une IP pourrait suffir, à voir suivant le contexte d'utilisation.
    Pas de questions techniques par MP

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 56
    Points : 35
    Points
    35
    Par défaut threads
    Merci pour ta proposition.
    j'ai fais comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    public class TestIP
            {
                private string ip;
                private string namePC;
                private ScannReseau rootI;
     
                public TestIP(String adresse, ScannReseau mi)
                {
                    ip = adresse;
                    rootI = mi;
                }
     
                public void VerifierIP()
                {
                    try
                    {
                        namePC = Dns.GetHostByAddress(ip).HostName.ToString();
                        if (!namePC.StartsWith(ip))
                            rootI.addPoste(namePC, ip);
                    }
                    catch (Exception ex) { }
                }
            }
    puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    if (m2 < 255)
                {
                    int Deb = calculAdrDeb(a2, m2);
                    int fin = calculAdrFin(a2, m2);
                    for (int i = Deb; i <= fin; i++)
                    {
                        for (int j = 0; j < 255; j++)
                        {
                            for (int k = 0; k < 255; k++)
                            {
                                string adr = a1 + "." + i + "." + j + "." + k;
     
                                TestIP tip = new TestIP(adr, this);
                                Thread t = new Thread(new ThreadStart(tip.VerifierIP()));
                                //Thread t = new Thread(new ThreadStart(tip.VerifierIP(adr)));
                                testIPtab.Add(t);
                                t.Start();  
     
                            }
                        }
                    }
                }
    l'erreur est:
    Method name expected (VerifierIP).
    je sais pas pourquoi pourtant lorsque je fais "tip." la liste des methodes s'affiche et VerifierIP existe parmi la liste..
    JE vous remercie tous pour l'aide..

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Points : 627
    Points
    627
    Par défaut
    Salut,

    comme le message d'erreur l'indique ("Method name expected"), le delegué attend un nom de methode et pas un appel. Enleve les parenthèses derriere VerifierIP. =)

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 56
    Points : 35
    Points
    35
    Par défaut threads
    Merci bcp oui c'est bien ca la faute.. Merci

Discussions similaires

  1. Lancer deux classes avec les threads
    Par Invité1 dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 15/05/2008, 19h06
  2. Classe lanceuse de Thread et nettoyage
    Par TSalm dans le forum Général Dotnet
    Réponses: 9
    Dernier message: 25/01/2008, 11h49
  3. Réponses: 2
    Dernier message: 10/11/2006, 23h08
  4. [C#] Peut-on étendre la classe system.Thread ?
    Par AiSpirit dans le forum C#
    Réponses: 5
    Dernier message: 10/08/2006, 18h24
  5. classe dérivée de thread
    Par aaronw dans le forum Threads & Processus
    Réponses: 9
    Dernier message: 08/03/2006, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo