---
title: "Skapa ny thread från en thread, möjligt?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/103824-skapa-ny-thread-från-en-thread-möjligt"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "P"
published: "2004-05-18T08:41:03.000Z"
updated: "2004-05-18T13:03:45.000Z"
replies: 5
views: 271
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/103824-skapa-ny-thread-från-en-thread-möjligt"
---

# Skapa ny thread från en thread, möjligt?

## #1 — P, 2004-05-18T08:41Z

Har något som ser ut ungefär så här:

```
' Lyssnar efter meddeladen från server
t = new thread
t.start()
while true
select case myMessageFromServer
   case "100
   'Starta ett nytt form
end while
```

Lyssnar efter meddelanden från en server, när de kommer ska åtgärder göras. Nu vill jag öppna ett nytt form, försöker med:

```
dim frm as new frm
frm.show()  / frm.showdialog()
```

Har testat med Events och starta dessa med utan resultat. Alltså: Hur starta en ny tråd,fönster från en tråd?

Permalänk: https://www.webforum.nu/p/103824

## #2 — Gladh, 2004-05-18T08:56Z

Du skall enkelt kunna skapa en ny tråd från en tråd, tänk bara på att visa trådar väntar till deras bakgrundstrådar kör färdigt, andra inte. 

Så om du har en tråd och startar 5 nya trådar i den. Då kan du antingen låta "huvudtråden" vänta tills alla 5 är färdiga innan den dör, eller så dör dina "undertrådar" när din huvudtråd dör. Läs mer om BackgroundThread i hjälpen.

Du skall ALDRIG ALDRIG accessa en kontroll från en annan tråd än den som skapade kontrollen. Detta kan ge dig obehagliga problem som du kommer felsöka dig till döds efter, eftersom det fungerar bra ibland, men ibland inte.

Läs på om Control.InvokeRequired i hjälpen, här kommer litet utdrag:

> Controls in Windows Forms are bound to a specific thread and are not thread safe. Therefore, if you are calling a control's method from a different thread, you must use one of the control's invoke methods to marshal the call to the proper thread. This property can be used to determine if you must call an invoke method, which can be useful if you do not know what thread owns a control. There are four methods on a control that are safe to call from any thread: Invoke, BeginInvoke, EndInvoke and CreateGraphics. For all other method calls, you should use one of these invoke methods when calling from a different thread.
> 
> For more information about multithreaded Windows Forms controls, see Multithreaded Windows Forms Control Sample.

\- M

Permalänk: https://www.webforum.nu/p/1350491

## #3 — P, 2004-05-18T09:41Z

Ska kolla mera på det, som det är nu så dör tråden som skapar trådarna när de skapas. 

Ahh blir f\*n galen, att det ska vara så krångligt....  x(  x(  x(  x(  x(

Permalänk: https://www.webforum.nu/p/1350505

## #4 — Gladh, 2004-05-18T11:39Z

Hur vet du att tråden dör?

\- M

Permalänk: https://www.webforum.nu/p/1350582

## #5 — P, 2004-05-18T12:20Z

Nja dör och dör, den stannar i alla fall...

Permalänk: https://www.webforum.nu/p/1350603

## #6 — P, 2004-05-18T13:03Z

Ja äntligen, efter mycket slit så fungerar det ( hyffsat)

```
Imports System.Threading
Public Class NewForm
    Inherits System.Windows.Forms.Form
    Private t As New Thread(New ThreadStart(AddressOf start))
    Private t2 As New Thread(New ThreadStart(AddressOf Check))

    Delegate Sub myNewForm()

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        t.Start()
        t2.start()
    End Sub

    Sub start()
        While True
            Label1.Text += 1
            t.Sleep(20)
        End While
    End Sub

    Sub Check()
        While True
            Select Case Label1.Text
                Case 100, 200, 300
                    Me.Invoke(New myNewForm(AddressOf startNew))
            End Select
        End While
    End Sub

    Sub startNew()
        Dim frm As New newForm2()
        frm.Show()
    End Sub

End Class
```

Permalänk: https://www.webforum.nu/p/1350624

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/103824-skapa-ny-thread-från-en-thread-möjligt
