Ich habe einen Windows-Dienst, der mit einer GUI-Anwendung über Named Pipes kommuniziert. Deshalb habe ich einen Thread laufen, der darauf wartet, dass die App eine Verbindung herstellt, was gut läuft, wenn ich es einmal mache. Wenn der Thread jedoch eine neue Instanz des Named Pipe Stream-Servers erstellt, bricht die bereits bestehende Verbindung zusammen und ich erhalte die Ausnahme für alle Instanzen. Das Codefragment, wo die Ausnahme ausgelöst wird, ist dies:Alle Instanzen beschäftigt Ausnahme auf Named Pipe Erstellung
class PipeStreamWriter : TextWriter
{
static NamedPipeServerStream _output = null;
static StreamWriter _writer = null;
static Thread myThread = null;
public PipeStreamWriter()
{
if (myThread == null)
{
ThreadStart newThread = new ThreadStart(delegate{WaitForPipeClient();});
myThread = new Thread(newThread);
myThread.Start();
}
}
public static void WaitForPipeClient()
{
Thread.Sleep(25000);
while (true)
{
NamedPipeServerStream ps = new NamedPipeServerStream("mytestp");
ps.WaitForConnection();
_output = ps;
_writer = new StreamWriter(_output);
}
}
die Ausnahme ausgelöst wird, wenn der neuen Rohr Server Strom NamedPipeServerStream ps = new NamedPipeServerStream("mytestp")
das zweite Mal, zu schaffen.
EDIT:
fand ich die Antwort und es funktioniert, wenn die maximale Anzahl von Serverinstanzen angegeben NamedPipeServerStream ps = new NamedPipeServerStream("mytestp",PipeDirection.Out,10);
Der Standardwert für diesen -1 zu sein scheint. Was zu einer anderen, aber nicht so wichtigen Frage führt: Weiß jemand, warum es -1 ist und nicht 1, wenn es sich wie 1 verhält?
sagt [hier] (https://msdn.microsoft.com/en-us/library/bb355760 (v = vs.110) aspx # ANCHOR_2) der Standardwert 1. Dennoch ist Ihre Lösung hat auch mein Problem gelöst, Prost! Ich würde darüber nachdenken, es als Antwort einzureichen, hätte eine Stimme von mir bekommen. –
Ich habe mir gerade den .Net-Code bezüglich der "-1" angeschaut: Win32 erlaubt feste Werte von 1-254 oder 255, die vom System erlaubte Höchstwerte bedeuten. Wir legen 255 als -1 (unbegrenzt) über die Konstante MaxAllowedServerInstances offen. Dies ist z.B. mit -1 als unendliches Timeout, etc – derape