Consolen Anwendung in Windows Forms Anwendung verwandeln

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von TheoTechnic.

    Consolen Anwendung in Windows Forms Anwendung verwandeln

    Hallo liebe VB-Paradise Communty und User,

    ich hätte ein kleines Problem mit einen Open Source Projekt, es handelt sich um Multiserver (TCP).


    Mein Problem ist es, ich möchte die Server Console in eine Windows Froms Anwendung verwandeln, doch ich hab das Problem mit der Sub Main, ich weiß nicht wie ich diese in eine Windows Forms Anwendung ausdrücken soll. Ich habe versucht die Sub Main mit einen Timer Tick und mit der Form Load Sub zu ersetzen, doch beides ist leider gescheitert. Könnte mir jemand vielleicht erklären wie ich das ganze am besten löse ?
    Für eine Console ist Main der Startthread der Startthread einer Form wäre grob genommen Form.Load(eig ja New)
    Und für den Anfang nimmst du dann ne Listbox oder ne Multiline-Textbox. Sollte ja nicht so schwer sein.

    Achte aber darauf das Warteschleifen Form.Load aufhalten und dann die Form nicht angzeigt wird
    Such mal nach Multithreading. Zu der Synchronisation: Beim Multithreading kann es passieren, dass 2 Threads auf ein Objekt zugreifen. Beispiel: Wir haben zwie Threads, die die Variable "Counter" um 1 erhöhen, bis diese die Zahl 100 erreicht. In jeden Thread kommt nun also das:

    VB.NET-Quellcode

    1. If counter <= 100 Then
    2. 'stoppunkt
    3. counter = counter + 1
    4. End If

    Da das System aber nicht genug Kerne für alle Threads hat, werden diese so verteilt.
    Auf Kern 1:

    VB.NET-Quellcode

    1. Thread 1 Los, Thread 1 Pause, Thread 2 Los, Thread 2 Pause, Thread 1 Los, Thread 1 Pause....

    Das nennt man "Switchen".
    Nehmen wir an, counter hat gerade den Wert 99 Erreicht. Thread 1 ist gerade beim Stoppunkt (siehe oben im 1. VB Code). Jetzt lässt ihn das System pausieren und Thread 2 ist dran. Thread 2 erhöht "Counter" um 1 und damit ist dieser bei 100 angelangt. Da Thread 1 aber nach der überprüfung stehengeblieben ist, aber noch nicht erhöht hat, erhöht dieser auch noch einmal. Damit ist "Counter" bei 101 angelangt. Das verhindert man, in dem man den betroffenen Code in einen Synchronize-Block setzt.
    MfG TheoTechnic