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 :

[C#] Processus a part


Sujet :

C#

  1. #1
    Membre Expert
    Avatar de ArHacKnIdE
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 947
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 947
    Par défaut [C#] Processus a part
    Bonjour à Tous,

    Désolé pour le titre mais je n'ai pas trouvé plus adapté

    Alors voici mon problème, J'ai un code mais lorsque que, par exemple, on le lance à partir d'un bouton, il va mettre toute la Form inactive, il faudrait que je puisse executer ce code dans ma Form tout en gardant sa disponibilité

    C'est pour ça que je pensai que peut être il y avait une fonction... qui permettait de couper ma Form avec une partie passive, avec mon code à l'intérieur et une partie active.

    Je dis une partie passive car c'est le code d'un serveur qui attend une connexion.

    J'ai testé en mode console, c'est pareil, je ne peux plus rien faire une fois que ce code est lancé, mais mon application marche

    Comment y Remédier ?

    Merci

    Le code :

    IPHostEntry ipHostEntry = Dns.Resolve(Dns.GetHostName());

    IPAddress ipAddress = ipHostEntry.AddressList[0];



    try
    {

    Socket ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);


    ServerSocket.Bind(new IPEndPoint(ipAddress, 666));

    ServerSocket.Listen(1);

    Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    byte[] buffer = new byte[1024];
    int count;

    while ((clientSocket = ServerSocket.Accept()) != null)
    {

    count = clientSocket.Receive(buffer, 0, 1024, SocketFlags.None);
    Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, count));
    }
    }
    catch (Exception e)
    {
    Console.Error.WriteLine(e.Message);
    }
    PS : J'ai testé et ce n'est pas à cause du While.

    Merci

  2. #2
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    un thread alors avec le BackGroundWorker si t'es en DotNet 2.0, sinon, à la mno

  3. #3
    Membre Expert
    Avatar de ArHacKnIdE
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 947
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 947
    Par défaut
    Merci j'ai donc fait ça mais mon code ne s'execute pas dans le BackgroundWorker :

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
    IPHostEntry ipHostEntry = Dns.Resolve(Dns.GetHostName());

    IPAddress ipAddress = ipHostEntry.AddressList[0];





    Socket ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);


    ServerSocket.Bind(new IPEndPoint(ipAddress, 666));

    ServerSocket.Listen(1);

    Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    byte[] buffer = new byte[1024];
    int count;

    while ((clientSocket = ServerSocket.Accept()) != null)
    {

    count = clientSocket.Receive(buffer, 0, 1024, SocketFlags.None);
    textBox2.Text = Encoding.ASCII.GetString(buffer, 0, count);
    }

    }
    Je suis sur qu'il ne s'execute pas car j'ai testé d'y accéder avec Telnet et ça ne marche pas

    Comment faut-il configurer le BackgroundWorker ?

    Peut-être doWork n'est pas le bon evenement

    Encore Merci

  4. #4
    Membre Expert
    Avatar de ArHacKnIdE
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 947
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 947
    Par défaut
    Alors j'ai essayé tous les evenement du BackgroundWorker et aucun ne me lance mon code(que j'ai testé dans tous les evenements)

    Pourquoi mon code ne se lancerai t'il pas en arrière plan ?

    Merci

  5. #5
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Salut .

    tu places ton code dans le background worker et tu appel la méthode RunWorkerAsync

    L'article qui parle de ce compo : http://glarde.developpez.com/dotnet/bgworker/

  6. #6
    Membre Expert
    Avatar de ArHacKnIdE
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 947
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 947
    Par défaut
    Merci maintenant ça a bien l'air de lancer mon serveur sans faire planter l'application, mais je n'arrive toujours pas à faire ce que je veux

    Je veux faire des applications Client/Serveur, qu'elles puissent recevoir mais aussi envoyer.

    Comme elle est là mon application envoie bien(donc mon client ok) mais pour ce qui est de la réception, elle n'a pas l'air de recevoir, elle devrai recevoir dans la TextBox2.

    J'ai un serveur en mode console qui marche, c'est exactement le meme code

    Voilà mon code complet de ma Form :

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.Net.Sockets;

    namespace WindowsApplication1
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();





    }





    private void button1_Click(object sender, EventArgs e)
    {
    try
    {

    Socket _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);


    _socket.Connect(new IPEndPoint(System.Net.Dns.GetHostByAddress("192.168.1.177").AddressList[0], 666));



    Byte[] Message = System.Text.Encoding.ASCII.GetBytes(textBox1.Text);
    _socket.Send(Message, 0, Message.Length, SocketFlags.None);
    }
    catch
    {

    }
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
    IPHostEntry ipHostEntry = Dns.Resolve(Dns.GetHostName());

    IPAddress ipAddress = ipHostEntry.AddressList[0];





    try
    {
    Socket ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);


    ServerSocket.Bind(new IPEndPoint(ipAddress, 666));

    ServerSocket.Listen(1);

    Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    byte[] buffer = new byte[1024];
    int count;

    while ((clientSocket = ServerSocket.Accept()) != null)
    {

    count = clientSocket.Receive(buffer, 0, 1024, SocketFlags.None);
    textBox2.Text = Encoding.ASCII.GetString(buffer, 0, count);
    }

    }



    catch
    {

    }
    }

    private void button2_Click(object sender, EventArgs e)
    {
    backgroundWorker1.RunWorkerAsync();
    }




    }



    }
    Merci beaucoup

    EDIT : MERCI CA MARCHE

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Processus paralleles
    Par Lyes dans le forum Threads & Processus
    Réponses: 4
    Dernier message: 11/02/2003, 13h04
  2. 1 variable pour 2 processus
    Par kacedda dans le forum POSIX
    Réponses: 2
    Dernier message: 11/02/2003, 06h32
  3. probleme avec les processus
    Par saidi dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/02/2003, 00h18
  4. [VB6] [Système] Tuer un processus courant
    Par mdoyer dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 22/10/2002, 14h47
  5. Réponses: 2
    Dernier message: 04/10/2002, 09h13

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