Announcement

Collapse
No announcement yet.

Backgroundworker / Thread / Formular

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Backgroundworker / Thread / Formular

    Grias God zusammen


    vorab, meine naive "denkstruktur" zum Thread

    ich "dachte", man könne ein Formular "einfach" in einen neuen thread
    packen ... und alles was "dortDrin" dann gemacht wird ... ereignet sich
    entsprechend in diesem thread (bei multiprocessoren doch nicht falsch)

    so weit so gut:

    ich bekomme auch mein "thread" hin ... allerdings ist der nicht zu sehen
    - glaub ich ...
    oder liegts daran, dass der thread nicht "public" ist und beim
    klicken auf den "setzeThreadButton" dann auch der thread erlischt !?


    [highlight=vbnet]
    sub setzeThreadButton()
    Dim mbcForm As New MyBitClass(myStocks) ' myStocks brauch ich dort :-)

    'mbcForm.Show() .. klar so gehts immer

    'Dim mbTreadForm As New System.Threading.Thread(AddressOf New MyBitClass(myStocks).Show)
    ' mbTreadForm.start ...

    Dim mbTreadForm As New System.Threading.Thread(AddressOf mbcForm.Show)

    mbTreadForm.Start()

    End Sub

    [/highlight]

    zur kontrolle hab ich mir in dem zu öffnenden Form beim load-ereigniss
    ne messagebox reingesetzt ...
    und solange diese aktiv ist ... ist auch das Formular zu sehen :-)
    > klick und weg is es


    auch so hab ich einige versuche .... versucht

    Code:
     Shared t As New Threading.Thread(AddressOf RunForm)
    
        Private Shared Sub RunForm()
            Dim ch02 As New DaxChart02
            ch02.Name = "Min30"
            'ch02.Show()
            Application.Run(ch02)
        End Sub
    
    
        Shared Sub ShowFormAsync()
            t.Start()
        End Sub
    
    ' geht leider auch nicht so richtig ....
    vor lauter versuchen seh ich den wald nimma ....
    und entweder klappt des EINE dann kann ich
    bei der "new(" keine daten übergeben *heul*

    hat jemand nen guten tip oder so ?
    Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
    Um heute vorm PC zu sitzen!

  • #2
    peinlich ...

    (jetzt) gehts doch ... so wie gewollt ... aber bitte nicht fragen warum

    ... WARUM = weil ich mal so zum spass:

    statt:
    Code:
     Dim mbTreadForm As New System.Threading.Thread(AddressOf mbcForm.Show) ' >>>
     mbTreadForm.Start()
    Code:
     Dim mbTreadForm As New System.Threading.Thread(AddressOf mbcForm.ShowDialog)
     
    mbTreadForm.Start()
    eingegeben habe :-)
    und jo ... 4 x s gleiche fenster in nahezu gleicher geschwindigkeit -
    laufen quasi parallel :-)
    Zuletzt editiert von Fremder; 12.05.2010, 15:40.
    Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
    Um heute vorm PC zu sitzen!

    Comment


    • #3
      Zur Klärung: Wenn Du Show() aufrufst, läuft der neue Thread weiter, erreicht sein Ende und gibt alle Ressourcen wieder frei, inklusive dem Fenster, das er hätte anzeigen sollen. Rufst Du aber ShowDialog() auf, bleibt der Thread so lange stehen, bis das Fenster geschlossen ist. Erst wenn das Fenster geschlossen wird, erreicht der Thread sein Ende und gibt die Ressourcen wieder frei.

      Comment

      Working...
      X