Anonyme-Pipes und Windows XP!

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Anonyme-Pipes und Windows XP!

    Moin! :)
    Ich verwende Anonyme-Pipes, unter Windows 7 bis 10, keine Probleme!
    Aber auf meinen virtuellen WinXP Pro erscheint bei vielen Anfragen eine Fehlermeldung!
    „Alle Pipeinstanzen sind ausgelastet“.
    Und habe keine Lösung gefunden!
    In einem Forum heißt es „Failed to connect pipe to virtual machine“.
    Hat jemand von euch noch ein WinXP real installiert?
    Der Fehler tritt auf, wenn man viele Nachrichten sendet, aber nur unter XP!
    Freue mich falls jemand es testen kann.
    BIG THX

    Link:
    Anonyme Pipes unter VB.NET richtig anwenden!

    Visual Basic.NET 8o
    MS-SQL
    8o

    Cheffboss schrieb:

    Ich verwende Anonyme-Pipes
    Deinen Code-Beispielen nach zu urteilen, verwendest du eher Named Pipes, aber egal.

    Cheffboss schrieb:

    Hat jemand von euch noch ein WinXP real installiert?
    Ich kann dir eine ISO-Image mit XP zur Verfügung stellen :P
    Im Ernst: Selbst Windows 7 ist schon nicht mehr offiziell unterstützt.
    Ich unterstütze als Entwickler XP schon lange nicht mehr.
    Und wenn ich das müsste, würde ich unter XP eine Entwicklungsumgebung aufbauen.
    Visual Studio 2010 lief meines Wissens noch auf XP.

    Cheffboss schrieb:

    Alle Pipeinstanzen sind ausgelastet
    deutet darauf hin, dass dir die Handles ausgehen.
    Win XP wurde üblicherweise als 32-Bit-Version installiert und da sind die Ressourcen etwas begrenzter.

    Erzeugst du jedes Mal eine neue Pipe und machst die alte nicht sauber zu?
    Dann ist das ein grundsätzlicher Design-Fehler und könnte dir theoretisch auch auf modernen Systemen um die Ohren fliegen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Jo - unsaubere Resourcen-Bereinigung wäre auch bei mir die Richtung, in die ich denken würde.
    Ansonsten kann man den Fehler sicher auch mal googeln...

    Ach und meine stereotype Rückfrage:
    Fehlerzeile?
    genauer Wortlaut der Fehlermeldung?

    (kannja sein, dass keine Fehlerzeile angegeben werden kann, aber das ist auch eine Information)
    @petaod @ErfinderDesRades
    Danke, an euch beide. :)
    Unter Windows XP benötigte man noch den Befehl: pipeServer.Disconnect()
    Keine Ahnung warum Windows 10 diesen nicht benötigt, aber egal es geht nun.
    Ich habe das Beispielprojekt aktualisiert und wieder hochgeladen!

    VB.NET-Quellcode

    1. Private Sub WaitForConnectionCallBack(ByVal iar As IAsyncResult)
    2. Try
    3. Dim pipeServer As NamedPipeServerStream = CType(iar.AsyncState, NamedPipeServerStream)
    4. pipeServer.EndWaitForConnection(iar)
    5. Dim buffer As Byte() = New Byte(254) {}
    6. pipeServer.Read(buffer, 0, 255)
    7. Dim stringData As String = Encoding.UTF8.GetString(buffer, 0, buffer.Length).Replace(vbNullChar, "")
    8. pipeServer.Disconnect() ' wichtig!
    9. pipeServer.Close()
    10. pipeServer = Nothing
    11. pipeServer = New NamedPipeServerStream(m_pipeName, PipeDirection.[In], 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous)
    12. pipeServer.BeginWaitForConnection(New AsyncCallback(AddressOf WaitForConnectionCallBack), pipeServer)
    13. RaiseEvent NeueDateien(stringData)
    14. Catch oEX As Exception
    15. MsgBox(oEX.ToString)
    16. Return
    17. End Try
    18. End Sub
    Visual Basic.NET 8o
    MS-SQL
    8o

    Cheffboss schrieb:

    Unter Windows XP benötigte man noch den Befehl: pipeServer.Disconnect()
    Keine Ahnung warum Windows 10 diesen nicht benötigt
    Wie bereits erwähnt: Auf einem 64-Bit-System hast du mehr Ressourcen und da ist der Fehler bisher nicht zum Vorschein getreten, aber theoretisch könnte das unter Windows 10 genauso passieren.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --