Fragen zu Multithreading

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von joniator.

    Fragen zu Multithreading

    Hi
    Ich weis nicht obs das schon gab, wenn ja, sorry deswegen.
    Ich hab 2 kleine fragen zu Multithreading, die mir ein wenig zu Cryptisch auf Tut-seiten beschrieben wurden.

    1. Wie kann ich eine Variable, bzw eine Array übergeben
    2. Wie kann ich einzelne threads aborten, wenn diese ihre arbeit getan haben, um Recourcen frei zu machen?(innerhalb und ausserhalb des threads)

    Ich freue mich auf eure Antwort!
    Wer Rechtschreibfehler findet darf sie behalten :)
    Hallo,
    mit Threading.ParameterizedThreadStart kannst du mit 1 Parameter Starten. Ich glaube du kannst nur mit 1 Parameter Arbeiten. Aber übergib doch eine List(of objeckt) und packe in diese deine Variablen ;)


    Beispiel

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. Dim list As New List(Of Object)
    3. Dim Hallo As String = "Hallo"
    4. Dim Bool As Boolean = True
    5. Dim Array() As String = {"Hallo", "wie", "geht", "es", "?"}
    6. list.Add(Hallo)
    7. list.Add(Bool)
    8. list.Add(Array)
    9. Dim tstart As New Threading.ParameterizedThreadStart(AddressOf getxy)
    10. Dim thread As New Threading.Thread(tstart)
    11. thread.Start(list)
    12. End Sub
    13. Private Sub getxy(list As List(Of Object))
    14. Dim Hallo As String = list(0)
    15. Dim Bool As Boolean = list(1)
    16. Dim Array() As String = list(2)
    17. If Bool = True Then
    18. MsgBox(Hallo & " " & Array(1) & " " & Array(2) & " " & Array(3) & " " & Array(4))
    19. End If
    20. End Sub


    Gruß Andy

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Andy16823“ ()

    joniator schrieb:

    Wie kann ich einzelne threads aborten
    Wenn ein Thread seine Arbeit getan hat, sollte er von allein die Thfread-Prozedur verlassen, damit ist der Thread beendet.
    Wenn Du da eine Endlosschleife drin hast, setz von außen eine "Triggervariable", dass die Schleife verlassen wird.
    Einen Thread mit Abort() zu beenden ist eine Holzhammermethode.
    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!
    Oha, da hat sich das problem doch glatt von selbst gelöst^^

    was ich bis jetzt immer falsch gemacht hab:

    VB.NET-Quellcode

    1. neuerthread = New System.Threading.Thread(AddressOf Me.thread)
    2. For i = 0 To 20
    3. neuerthread.Start()
    4. Next i



    was richtig währ:

    VB.NET-Quellcode

    1. For i = 0 To 20
    2. neuerthread = New System.Threading.Thread(AddressOf Me.thread)
    3. neuerthread.Start()
    4. Next i

    Trotzdem danke :)
    Wer Rechtschreibfehler findet darf sie behalten :)
    Das war jetzt nur ein beispiel.^^
    Ps: 20 mal das selbe? Vll isses ja´n bot oder ein ddos tool oder ein bruteforcer xD(nicht ernst nehmen :))
    Wer Rechtschreibfehler findet darf sie behalten :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „joniator“ ()

    Das war jetzt nur ein beispiel,nix ernstes, um ehrlich zu sein: es is für n kleines minni game, ist aber egal :)
    Ich hab 20 messer zu hause, ich geh jetzt auch nicht in die Stadt und mach ein massaker damit.
    Aber trotzdem danke für die nette hilfe!
    Wer Rechtschreibfehler findet darf sie behalten :)
    OT: Wer kommt bitte auf die Idee einen Amoklauf mit nem (bösartigen) Programm zu vergleichen? O.o
    Wenn ein Programm 20 mal den selben Thread startet, dann deutet das sehr wohl darauf hin, dass der Entwickler nichts gutes vor hat. Selbst wenn er das nicht tut, kann man das besser lösen.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Die polizei: Ddos, trojaner, normale viren usw... achja nicht zu vergessen: spam (energie verschwendung pur...)

    Ich hab das jetzt nur mal so geschrieben, hatte das problem vor langer zeit mal, will den code nicht mehr ausgraben...
    Wer Rechtschreibfehler findet darf sie behalten :)