Pipe de communication entre C++ et C#
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:
Code:
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);
}
}
}
}
} |
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
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#?