Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Thread och ärvda klasser / stream

Postades av 2004-05-15 17:27:50 - Erik Pettersson, i forum vb.net, Tråden har 7 Kommentarer och lästs av 854 personer

Startar en ny thread från en form. Funktionen är att den ska ligga och lyssna på en specifik port. Fungerar bra. När den sedan får se någon typ av information ska åtgärder göras. Har då funktioner för detta i en specifk klass som ärver från basklassen( om det nu spelar någon roll, vilket jag inte tror). Problemet är att när funktionera körs så får jag "The thread '<No Name>' (0xc34) has exited with code 0 (0x0)." Är det något jag har glömt eller tänker jag fel?


Svara

Sv: Thread och ärvda klasser / stream

Postades av 2004-05-15 17:51:18 - Patrik Löwendahl

Du får nog visa lite kod,

det känns direkt som att din tråd ramlar ur scope direkt.


Svara

Sv: Thread och ärvda klasser / stream

Postades av 2004-05-15 18:19:41 - Erik Pettersson

Kommer lite kod
<code>
Dim ircClient As New Irc.IrcAccess()
Dim t As New Thread(New ThreadStart(AddressOf ircClient.ConnectToIrc))
t.Start()
</code>
<code>
...
...
..
Case "001"
'Functions.Code001()
CType(ActiveForm, frmMain).sb1.Text = "Ansluting upprättad"
</code>

Detta fungerar men jag vill använda mig av: // Edit, efter lite närmare testing så fungerade det visst inte
<code>
ublic Class Functions
Inherits IrcAccess
Function Code001()
CType(ActiveForm, frmMain).sb1.Text = "Ansluting upprättad"
End Function
</code>

När detta körs så får jag thread-> exit


Svara

Sv: Thread och ärvda klasser / stream

Postades av 2004-05-16 00:01:08 - Erik Pettersson

Svarar mig själv med lite mera strul. Ussh!

Har en thread som ligger och kör. När den stöter på ett meddelande från servern som den lyssnar mot vill jag att den ska köra en ny thread, om detta nu är möjligt, i alla fall öppna en ny form, om detta nu är möjligt.

Alltså i den tråd som körs:
<code>
dim alla as new frm
frm.show()
</code>

Formen öppnas också mycket rikigt med den "fryser".

Blev väldigt rörigt det här, men men


Svara

Sv: Thread och ärvda klasser / stream

Postades av 2004-05-16 15:45:48 - Oskar Johansson

Viktig info:

Du behöver en ny messagethread för varje tråd. Det finns några roliga sätt att starta en sådan på. De fyre jag känner till varierar lite. Det viktiga att veta är att 3 utav dem inte fortsätter koden förens de är avslutade. En utav dem kan man starta när man vill och avsluta när man vill; och koden fortsätter direkt efter att loopen är startad (messagethread-saken är egentligen en evighetsloop.) Det är omöjligt att start en messageloop i en annan tråd än sin egna.

Vad den här loopen gör är att leta efter window messages, alltså meddelanden från t.ex. olika fönster, windows etc. De här meddelandena är t.ex. att man flyttar på musen, att fönstret försöker stängas eller liknande.

De här varianterna känner jag till:
1) System.Windows.Forms.Application.Run()
Den startar den vanligaste loopen. För att avsluta den anropar man .Exit() istället. Den stora nackdelen är att alla fönster i den tråden stängs när man anropar .Exit
2) EttFönster.ShowDialog()
EttFönster är alltså ett helt vanligt formulär. Det gör så att fönstret blir modalt i den tråden. Den startar en messageloop. När fönstret stängs stannas den loopen
3) Deklarera api:t WaitMessage. Kör en oändlig loop med följande:
<code>
do while ditt_villkor
WaitMessage
System.Windows.Forms.DoEvents()
loop
</code>
4) Använd lite Reflection och kör:
<code>
Dim m As System.Reflection.MethodInfo
m = GetType(System.Windows.Forms.Application).GetMethod("BeginModalMessageLoop", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Static)
m.Invoke(Nothing, Nothing)
</code>
Det startar en modalmessageloop. För att stoppa den, anropa samma kod fast med EndModal... etc.

Sedan finns det mer kul i System.Windows.Forms.Application*-klasserna som kan vara intressant att köra med reflection.


Svara

Sv: Thread och ärvda klasser / stream

Postades av 2004-05-16 19:36:04 - Erik Pettersson

Hmm tack för svaret, har testat runt lite men får det inte att fungera som jag vill, är absolut ingen expert så jag gör säkert en massa fel. Så här ligger det till, skapar en thread som lyssnar mot en server, denna får ett meddelande som körs mot en select case sats för att se vad som ska göras alltså i stil med:
<code>
while true
Select case message
case "blalal"
' Här vill jag öppna en ny form
' Testar med
Application.Run(new myform)
end while
</code>

Kod i myform:
<code>
' Startar en ny thread som ligger och lyssnar mot en variabel i tidigare kod,var 3:e sekund, om den innehåller något körs kod. Säkert väldigt dålig lösning, men men
</code>

Problemet är att den tråden som från början ska gå runt runt stannar när Application.Run(new myform) körs. Första gången jag håller på med detta så har inte en aning om vad som kan göras...


Svara

Sv: Thread och ärvda klasser / stream

Postades av 2004-05-16 21:02:30 - Andreas Håkansson

Din worker-thread (den som ligger och lyssnar) bör signalera huvudtråden när något har hänt, varpå huvudtråden anvsvarar för att skapa nya fönster etc. Ta dig en titt på denna tåden [Flytta &#246;ver exekvering till annan tr&#229;d.] (som vi snackade om på chatten igår) om vad du måste tänka på när du delegerar events mellan trådar (Patrik slängde upp ett fungerade exempel).


//Andreas


Svara

Sv: Thread och ärvda klasser / stream

Postades av 2004-05-17 13:31:20 - Erik Pettersson

Ushh svårt detta, kollat lite på hans kod, förstår inte mycket. Jobbigt att det ska vara så svårt att hålla flera trådar igång...


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 721
27 958
271 751
5 826
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies