Konsole stürzt beim schliessen ab

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von gfcwfzkm.

    Konsole stürzt beim schliessen ab

    Hi

    Ich habe meinem Programm eine Konsole hinzugefügt.
    Jedoch stürzt diese beim schliessen immer ab bzw. Es kommen Fehler. Hier meinen Konsolen-Code:

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Imports System
    3. Module Module1
    4. <DllImport("kernel32.dll")> _
    5. Public Sub AllocConsole()
    6. End Sub
    7. <DllImport("kernel32.dll", SetLastError:=True, ExactSpelling:=True)> _
    8. Private Function FreeConsole() As Boolean
    9. End Function
    10. Dim x As New Threading.Thread(AddressOf Read)
    11. Public Sub Main()
    12. AllocConsole()
    13. Console.ForegroundColor = ConsoleColor.White
    14. x.Start()
    15. End Sub
    16. Public Sub Write(ByVal text As String)
    17. Console.ForegroundColor = ConsoleColor.Green
    18. Console.WriteLine("OUTPUT\> " & text)
    19. End Sub
    20. Public Sub fehler(ByVal text As String)
    21. Console.ForegroundColor = ConsoleColor.Red
    22. Console.WriteLine("OUT_ERROR\> " & text)
    23. End Sub
    24. Private Sub Read()
    25. A: Console.ForegroundColor = ConsoleColor.White
    26. Dim text As String = Console.ReadLine()
    27. If Not text.Trim.ToLower = Nothing Then
    28. Console.WriteLine("INPUT\> " & text)
    29. Call Commands(text)
    30. End If
    31. GoTo A
    32. End Sub
    33. Private Sub Commands(ByVal text As String)
    34. If text.Trim.ToLower = "help" Then
    35. Console.WriteLine("COMMANDS:")
    36. Console.WriteLine("help - Show this here...")
    37. Console.WriteLine("exit - Close the Application")
    38. Console.WriteLine("FlushMemory - Call MemoryManagement.FlushMemory()")
    39. ElseIf text.Trim.ToLower = "exit" Then
    40. FreeConsole()
    41. Application.Exit()
    42. ElseIf text.Trim.ToLower = "FlushMemory" Then
    43. Call MemoryManagement.FlushMemory()
    44. Else
    45. Console.WriteLine("UNKNOW COMMAND")
    46. End If
    47. End Sub
    48. End Module


    Bin Rahtlos, könnt ihr mir weiterhelfen?

    mfg & thx

    gfcwfzkm
    also, GoTo A erfüllt seinen Zweck, also is es mir recht egal, obs besser geht oder nicht.

    @Myrax - Bin auch nur ein Mensch...

    Zum Fehler:
    IOException wurde nicht behandelt.
    Für diesen Befehl ist nicht genügend Speicher verfügbar.

    Dies passiert bei der Sub Read() -> "Dim text as String = Console.ReadLine()"

    Jedoch verstehe ich nicht genau, wo das Problem genau ist oder wie man es lösen könnte...

    mfg

    gfcwfzkm
    Das ist eine Endlosschleife, die einer Message-Queue entspricht.
    Mach sie lieber so, ohne GoTo:

    VB.NET-Quellcode

    1. Do
    2. Loop
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Bekomme leider Den gleichen Fehler... ;(

    Jedoch ist mir aufgefallen, das wenn ich "FreeConsole()" in der Sub Commands() lösche, das sich nur die Form schliesst...

    Eig. sollte sich aber mit Application.Exit doch auch die Konsole schliessen, oder?

    mfg

    gfc

    EDIT://
    Problem gelöst, hab "FreeConsole()" mit "End" ersetzt =D