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


Asykrona metoder

Postades av 2004-11-16 09:47:18 - Marcus Marjasin, i forum asp.net generellt, Tråden har 5 Kommentarer och lästs av 552 personer

Hej

Jag har hört att man inte ska använda trådar ifall tråden måste leva en längre tid.
Jag vill utföra ett par (säg tre) ganska så tunga operationer parallellt och utanför
huvudtråden. Som jag förstår kan jag använda delegater. Men hur gör jag dessa
asykrona så att jag kan dra igång 3 st likvärdiga metoder och ändå kunna fortsätta
exekuvera koden. Sedan vill jag förstås ha en delegat/händelse som triggas när
en av dessa delegater är klara med sitt resultat.

Helst vill jag att huvudtråden ska kunna hämta status (vart i exekveringen) dessa
tre delegater befinner sig.

Hur är detta möjligt? Hur bör man göra. Jag skriver i vb.

Tack för hjälpen

Hälsningar

Marcus


Svara

Sv: Asykrona metoder

Postades av 2004-11-16 10:42:21 - Patrik Löwendahl

Flashback,

har vi inte sett den här tråden förut?


Alla delegater har en BeginInvoke metod som startar en asykronoperation istället för en synkron. Till BeginInvoke så kan du skicka med en delegat som talar om vart den skall ropa när den är klar.

För status så skulle jag kommunicerat med events när statusen ändras.

Däremot ställer jag mig frågande till "Jag har hört att man inte ska använda trådar ifall tråden måste leva en längre tid".

Trådar är definitivt att föredra om operationen pågår en längre tid. De är enklare att påverka och hantera om operationen måste avbrytas. Däremot om de skall pågå en kortare tid, då är tex threadpool eller asynkrona delegater att föredra.


Svara

Sv: Asykrona metoder

Postades av 2004-11-16 19:40:35 - Roger Alsing

bara för att fylla i lite.
när du gör ett asyncront anrop med begininvoke så är det en vanlig tråd med IsBackground=true och IsThreadPoolThread=true som sköter anropet.

så det är ju i princip hugget som stucket...

//Roger


Svara

Sv: Asykrona metoder

Postades av 2004-11-17 08:34:29 - Marcus Marjasin

Jaha, det va ett bra förklaring.

Jag får se vad jag använder mig av.

Jag har nu åtminstonde lyckats knåpa ihop en asynkron delegate. Här
är ett exempel för den som vill ha.

Tack
MarcusC

<code>
Imports System.Runtime.Remoting.Messaging ‘Import this namespace

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'Declare my class where the delegate located
Dim w As New Worker

'Declare an asyncallback variable as AsyncCallback
Dim asyncallback As AsyncCallback

'Set the asyncallback variable to new instance of AsyncCallback addressed to the CallbackMethod
asyncallback = New AsyncCallback(AddressOf MyCallback)

'Create variable as delegateobject, address/point of the worker funktion
Dim workerBalanceDelegate As New Worker.myBalance(AddressOf w.Caculate)

'Begin Invoke the declared delegated variable, pass asyncallback veriable how hold the callback function to the delegate
workerBalanceDelegate.BeginInvoke(asyncallback, 0)

End Sub

'CALLBACK Method. Must be a Sub. Signature as IAsyncResult
Sub MyCallback(ByVal result As IAsyncResult)

'Declare verible as AsyncResult object
Dim ar As AsyncResult
'Set the passing result param to the declared ar using ctype
ar = CType(result, AsyncResult)
'Create variable as the delegate funktion. Use the created AsyncResult variables AsyncDelegate function, and using ctype.
Dim balanse As Worker.myBalance = CType(ar.AsyncDelegate, Worker.myBalance)

'Call the EndInoke of the lokal created delegate. pass the AsyncResult (ar) param.
MessageBox.Show(balanse.EndInvoke(ar))

End Sub

End Class

Class Worker
'The delegate
Public Delegate Function myBalance() As Date

‘THE delegate worker funktion. Same type and signature as the delegate
Function Caculate() As Date
Threading.Thread.Sleep(5000)
Return Now
End Function
End Class

</code>


Svara

Sv: Asykrona metoder

Postades av 2004-12-13 11:41:25 - Daniel Petersson

du har hört precis fel, Långa operationer som lever lika länge som applikationen ska exekveras på en egen tråd som du skapar via Thread klassen annars ska du använda trådpoolen. (asynka delegater använder trådpoolen)


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

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 569 601
27 953
271 705
4 062
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