Bonjour,
J'ai une dll écrite en C++ qui prend en paramètre un handle de pipe pour écrire des infos dans un pipe de communication.
J'avais une autre dll en C++ qui faisait la création et la lecture du pipe. J'ai besoin de réécrire cette partie dans une dll C#, j'ai donc tenté d'utiliser les NamedPipeStream:
Je passe le handle à ma dll C++ qui semble bien écrire dans le pipe. J'appelle la méthode Read dans un thread , mais je ne récupère rien lors de la lecture
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 public class Pipe { private NamedPipeServerStream pipeServer; public Pipe() { pipeServer = new NamedPipeServerStream("testpipe", PipeDirection.InOut); } public string Handle { get{return pipeServer.SafePipeHandle.DangerousGetHandle().ToString();} } public void Read() { using(NamedPipeClientStream pipeClient =new NamedPipeClientStream(".", "testpipe", PipeDirection.InOut)) { Console.Write("Attempting to connect to pipe..."); pipeClient.Connect(); Console.WriteLine("Connected to pipe."); using(StreamReader sr = new StreamReader(pipeClient)) { string temp; while((temp = sr.ReadLine()) != null) { Console.WriteLine("Received from server: {0}", temp); } } } } }
Est ce que ma méthode vous semble correcte? y'a t'il un obstacle à ce que la dll C++ écrive dans le pipe C#?
Partager