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


Princip för async/trådning

Postades av 2008-02-20 16:57:12 - Thomas Roman, i forum vb.net, Tråden har 10 Kommentarer och lästs av 1075 personer

Jag har ett program som fungerar ungefär så här:
<code>
Public WSVar As String

Sub Something1()
'Div kod här
UseWebservice()
'Div kod här som använder variabeln WSVar
End Sub

Sub SubSomething2()
UseWebservice()
'Annan kod här som använder variabeln WSVar
End Sub

Sub UseWebservice()
WSVar = Webservie.ABC() 'Kalla på funktionen ABC i Webservice och spara resultatet i WSVar
'Koden här är egentligen längre eftersom svaret från webservicen måste behandlas, men slutresultatet sparas i WSVar
End Sub
</code>

Det fungerar bra, förutom att hela programmet låser sig medans Webservice.ABC körs. Just den biten kan man lösa genom att lägga till en handler för ABCCompleted och låta servicen köras async, men det ställer till det med Something1 och Something2 eftersom båda har kod som ska köras efter att Webservice.ABC är klar.

Allt det här kan lösas genom att kopiera all Webservice-kod till både Something1 och Something2 och att ange egna handlers för dom, men den lösningen känns inte "rätt".

Går det att lösa på ett finare sätt? Vet inte om principen gick fram, fråga i så fall så ska jag försöka förklara bättre =)


/Thomas


Svara

Sv: Princip för async/trådning

Postades av 2008-02-20 18:22:51 - Johan Djupmarker

<b>Allt det här kan lösas genom att kopiera all Webservice-kod till både Something1 och Something2</b>

Är inte säker på att jag har fårstått allt korrekt nu... Borde du inte kunna lägga koden du vill dubblera som en egen funktion som anropar från Something1 och Something2, då blir det inte dubblerat?

/Johan


Svara

Sv:Princip för async/trådning

Postades av 2008-02-20 19:03:13 - Thomas Roman

Så är ju exemplet jag skrev, all kod finns i UseWebservice() och den körs från Something1 och Something2, men kör jag den async så kommer efterföljande kod i Something1 och Something2 att köras direkt innan webservicen är klar.


/Thomas


Svara

Sv: Princip för async/trådning

Postades av 2008-02-20 20:56:14 - Johan Djupmarker

Har läst din fråga fler gånger nu och inser att jag missuppfattade det. Har tyvärr inget förslag på "perfekt" lösning. Såhär borde vara genomförbart:

Kör hela UseWebservice (eller bara webservice-anropet om du vill det) i en separat tråd. Låt sedan Something1 och Something2 köra runt i en loop med DoEvents medan de väntar på att UseWebservice blir klar. På så vis "dör" inte programmet under tiden och du kan fortsätta köra koden efteråt när tråden är klar.

/Johan


Svara

Sv:Princip för async/trådning

Postades av 2008-02-21 00:07:58 - Thomas Roman

Kanske inte den bästa lösningen men den fungerade helt ok. Tack för det!


/Thomas


Svara

Sv: Princip för async/trådning

Postades av 2008-02-27 07:49:13 - Chris Klug

Jag skulle itne köra den första tråden i en loop. Känns så där bra... Däremot borde du kunna använda antingen ett AutoResetEvent- eller ManualResetEventobjekt. [url:http://msdn2.microsoft.com/en-us/library/system.threading.autoresetevent.aspx]
Det kan användas till precis du behöver. Dvs stanna tråden till något annat hänt.


Svara

Sv:Princip för async/trådning

Postades av 2008-02-28 04:59:31 - Thomas Roman

Nu har jag gjort några tester med AutoResetEvent och det verkar som att programmet "låser sig" tills man kör WaitEvent.Set i den andra tråden.

Ska det vara så eller har jag gjort fel?
Min tidigare lösning låser i alla fall inte programmet under tiden.


/Thomas


Svara

Sv: Princip för async/trådning

Postades av 2008-02-28 14:11:18 - Chris Klug

juste det är sant. tänkte inte på det. Kan du inte köra webservice delarna asynchront bara. Alla webservice proxies man skapar i VS har ju en BeginXXX metod till vilken du kan skicka en callback delegate... Bara ett tips...


Svara

Sv:Princip för async/trådning

Postades av 2008-02-28 14:12:44 - Oskar Johansson

Eller i 2.0: de har events. Som jag för övrigt hatar, delegater är smidigare ;)


Svara

Sv:Princip för async/trådning

Postades av 2008-02-28 19:10:10 - Thomas Roman

BeginXXX blev jag rekommenderad tidigare men jag kan inte hitta något sånt. Det enda flertrådiga för webservices som jag har sett är just XXXasync, och det är ju så jag kör nu.

Men oavsett lösning så blir väl mitt problem detsamma? Att jag vill att den tråden som kör igång webservicen ska fortsätta där den var efter att webservicen är klar och det ska den göra utan att låsa resten av programmet.


/Thomas


Svara

Sv: Princip för async/trådning

Postades av 2008-02-29 00:19:37 - Oskar Johansson

Kan du inte bygga bort det? Måste den fortsätta där?


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 726
27 958
271 751
442
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