J'ai deux programmes (Serveur/Client) Je suis en train d'installer IPC pour eux (ils tournent tous deux sur la même boîte) Utilisation System.IO.Pipes & Net 3.5C# Pipes Restons ouverts
Lorsque j'appelle ComOpen, il ouvre correctement le tube, envoie l'ID de processus au serveur, puis le tube se ferme et une erreur se produit lorsqu'il tente d'envoyer le "deuxième test d'écriture". Comment garder le tuyau ouvert pendant toute la durée du programme? (j'utilise l'ID de processus sur le serveur pour fermer tout bas si le plantage du client)
private static StreamWriter MyWriter;
private static StreamReader MyReader;
private static NamedPipeClientStream IPCPipe = new NamedPipeClientStream(".", "MyPipe", PipeDirection.InOut);
public static bool MyWrite(string DataOut)
{
bool ValidPipeOut = false;
if(ValidComPort)
try
{
// Send Data
using (QstWriter = new StreamWriter(IPCPipe))
{
QstWriter.AutoFlush = true;
QstWriter.WriteLine(QstDataOut);
QstWriter.Close();
QstWriter.Dispose();
}
ValidPipeOut = true;
}
catch
{
ValidPipeOut = false;
}
return ValidPipeOut;
}
public static bool ComOpen()
{
ValidComPort = true;
try { IPCPipe.Connect(1000); }
catch (Exception ex)
{
string Erroris;
Erroris = ex.Message;
if (Erroris == "Already in a connected state.")
{
// We're Already Connected, Ignore this error.
ValidComPort = true;
}
else
{
ValidComPort = false;
MessageBox.Show(Erroris);
}
}
if (ValidComPort)
{
string ClientProcessID = System.Diagnostics.Process.GetCurrentProcess().Id.ToString();
MyReader = new StreamReader(IPCPipe);
ValidComPort = MyWrite(ClientProcessID);
ValidComPort = MyWrite("Second Write Test");
}
return ValidComPort;
}
Merci d'avoir résolu ce problème. –