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

Dotnet Discussion :

Question sur les threads


Sujet :

Dotnet

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut Question sur les threads
    Bonjour,

    Je me demandais si lors d'un appel de fonction "delegate" le système crée une instance à chaque fois que la fonction est appelée ou s'il repasse dans la mm instance?

    Je ne sais pas si ma question est très clair dc je vais essayer de la préciser un peu :

    - Soit une fonction traitement dans une classe A
    - Soit une boucle dans un timer dans une classe B qui appelle de façon asynchrone la fonction A.traitement

    Si la classe B rappelle A.traitement alors que A.traitement n'a pas fini le traitement du premier appel que se passe-t-il?

    1 - Le deuxième appel de A.traitement essaye d'éxécuter la mm instance de A et alors tout se marche dessus
    2 - A chaque appel de A.traitement le system crée une nouvelle instance de A ce qui rend chaque appel indépendant (ce qui serait mieux pour ce que je cherche à faire..)

    Merci d'avance

  2. #2
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Le fait d'appeler une méthode ne crée pas un nouvelle objet même dans un thread.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    mince... ça m'arrange pas ça!

    Comment faire alors pour appeler 10 threads qui font la mm chose (dc qui passe dans la mm fonction) sans qu'elles se "marchent dessus"?

  4. #4
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Le plus simple c'est que mette un exemple de ce que tu fais car la ce n'est pas clair et on risque de te donner une mauvaise réponse.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    ok je vais essayer de mettre le code ici mais je vais l'épurer un peu pour que ça soit le plus clair possible

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Private Sub Duplikator_Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Duplikator_Timer.Tick
            ' Traitement Duplikator : Recherche d'un instruction à traiter
            Dim sql As String
            Dim pDtb As Data.DataTable
            If started Then
                Duplikator_Timer.Enabled = False
                sql = "SELECT TOP 1 * FROM duplicator WHERE traiter=0 and nbrexec=0"
                pDtb = cBdd.pDtb(sql)
                Application.DoEvents()
                Call Me.mMainDuplicator(pDtb, sql)
            Else
                'Recherche d'une instruction à traiter parmi les lignes que l'on a déjà essayé de traiter mais qui n'ont pas marché 
                sql = "SELECT TOP 1 * FROM duplicator WHERE traiter=0 ORDER BY nbrexec ASC"
                pDtb = cBdd.pDtb(sql)
                Application.DoEvents()
                Call Me.mMainDuplicator(pDtb, sql)
            End If
            pDtb.Dispose()
            Duplikator_Timer.Enabled = True
          End Sub
     
    Private Sub mMainDuplicator(ByVal pDtb As Data.DataTable, ByVal sql As String)
     
            If pDtb.Rows.Count > 0 Then
                ' On place tout de suite le nbexec à 1 pour ne plus sélectionner cette ligne au prochain passage
                sql = "UPDATE duplicator SET nbrexec=nbrexec+1 WHERE id_duplicator=" & pDtb.Rows(0).Item("id_duplicator")
                cBdd.mExecuteNonQuery(Sql)
                For Each scrutation As ccScrutation In Me.CcMenuTable1.lstTableScrutation
                    If scrutation.pTableObjet.pTypObjet = pDtb.Rows(0).Item("id_element") Then
                        Dim ta_duplicator As New mStartCommand(AddressOf scrutation.mStartCommand)
                        Dim xml As New Xml.XmlDocument
                        xml.LoadXml(pDtb.Rows(0).Item("xml").ToString)
                        ta_duplicator.BeginInvoke(xml, pDtb.Rows(0).Item("id_action"), pDtb.Rows(0).Item("id_duplicator"), Nothing, Nothing)
                    End If
                Next
            End If
        End Sub

Discussions similaires

  1. Question sur les threads
    Par thebloodyman dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 22/01/2007, 07h28
  2. Questions sur les threads: généralités
    Par Gragra dans le forum C++
    Réponses: 9
    Dernier message: 04/11/2006, 16h28
  3. Quelques questions sur les threads
    Par benj63 dans le forum C++Builder
    Réponses: 28
    Dernier message: 21/11/2005, 13h27
  4. Question sur les threads
    Par Linio dans le forum Concurrence et multi-thread
    Réponses: 10
    Dernier message: 21/10/2005, 09h08
  5. Question sur les threads
    Par nicolas66 dans le forum MFC
    Réponses: 4
    Dernier message: 03/06/2005, 20h57

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