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 :

DLL Multi-Thread pour un programme en C


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 58
    Points : 33
    Points
    33
    Par défaut DLL Multi-Thread pour un programme en C
    Hello les amis Développez,

    Je suis sur un petit code sous forme d'une DLL en C# et j'ai besoin de faire des fonction multi-thread.

    Je vous montre mon bout de code et j’espère une charme débloque la situation .....


    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
     
    using System.Threading;
     
    namespace ThreadingClassLibrary
    {
        public class Class1
        {
     
          //----------------------------------------------------------------
            public void TestMesures(string[,] tabMesures, out bool blnErreurSurvenue, out string strErreurMessage)
            {
                blnErreurSurvenue = true;
                strErreurMessage = "Erreur inconnu !";
     
                // On démarre le traitement dans un nouveau Thread
                //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                ThreadStart work = InternalTestMesures(tabMesures, out blnErreurSurvenue, out strErreurMessage);
                 Thread thread = new Thread(work);
                 thread.Start();
            }
    //----------------------------------------------------------------
     
     
            void InternalTestMesures(string[,] tabMesures, out bool blnErreurSurvenue, out string strErreurMessage)
            {
                blnErreurSurvenue = true;
                strErreurMessage = "Erreur";
                StreamWriter sw;
                string msg = "";
     
                try
                {
     
                    // Création Stream
                    //----------------
     
                    sw = new StreamWriter("C:\\texte.txt");//création du fichier
     
                    for (int i = 0; i < tabMesures.GetLength(0); i++)
                    {
                        //
                        msg = tabMesures[i, 0] + "|" + tabMesures[i, 1] + "|" + tabMesures[i, 2] + "|" + tabMesures[i, 3] + "\n";
                        sw.Write(msg);
                    }
     
                    sw.Close();
     
     
                    blnErreurSurvenue = false;
                    strErreurMessage = "Traitement OK";
                }
                catch (Exception objException)
                {
                    blnErreurSurvenue = true;
                    strErreurMessage = objException.Message;
     
                }
     
                finally
                {
     
                }
     
            }
            //----------------------------------------------------------------
     
        }
    }
    J'ai ce message d'erreur :
    Impossible de convertir implicitement le type 'void' en 'System.Threading.ThreadStart'

    Pourrez-vous me corriger l'erreur ou me proposer une autre solution ?

    Merci d'avance

    Tanite

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Salut,
    tu ne peux pas passer directement de paramètres à une fonction en thread.
    Essaye ta fonction avec une signature sans paramètres et tu n'auras plus de problème.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThreadStart work = () => InternalTestMesures(tabMesures, out blnErreurSurvenue, out strErreurMessage);
    Par contre, qu'est-ce que tu comptes faire de blnErreurSurvenue et de strErreurMessage ? Quand le thread aura fini son boulot, tu ne seras plus dans TestMesures, et donc ces variables ne seront plus accessibles...

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 58
    Points : 33
    Points
    33
    Par défaut
    @the_only_kraft
    Merci pour votre réponse !
    J'ai besoin de passer des input et de récupérer des résultat après traitement ....
    Je suis dans un cas un peu co****, en fait la dll doit être utilisé par un programme en c (Labwindows/CVI) ...

    @tomlev
    Merci pour votre réponse.

    Effectivement mon but c'est de récupérer blnErreurSurvenue, et strErreurMessage pour communiquer des détails au programme C

    Peux-tu me proposer une solution ?
    Comment faire pour pouvoir exécuter le traitement dans un thread et récupérer blnErreurSurvenue, et strErreurMessage ?

    Je suis ouvert à toute proposition .

    Merci d'avance

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Est-ce que c'est la méthode TestMesures qui sera appelée par un programme C ? Si oui, ça ne sert à rien d'utiliser un thread : si les résultats sont en paramètres de sortie, le code appelant est obligé d'attendre que le calcul se termine...

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 58
    Points : 33
    Points
    33
    Par défaut
    Salut,

    Euh c'est une mauvaise nouvelle ....
    J'ai un grand souci, en fait j'ai un banc de test en multi slots
    qui lance des taches de test puis derrière impression d'une étiquette et la se bloque, il faut au minimum 10 sec pour sortir l'étiquette merdique (Recherche imprimante en LDAP + chargement logo + masque ....)

    Dommage d'avoir ce blocage .....

    Je reste toujours ouvert à toute proposition ....

    Merci ...

Discussions similaires

  1. Dll et multi threading
    Par Bruno_bcd dans le forum C
    Réponses: 4
    Dernier message: 16/06/2006, 10h16
  2. Réponses: 11
    Dernier message: 14/02/2006, 01h26
  3. Réponses: 15
    Dernier message: 07/07/2005, 12h05
  4. Réponses: 2
    Dernier message: 15/05/2004, 19h33
  5. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    Réponses: 3
    Dernier message: 27/03/2003, 19h09

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