![]() |
Tipp 0166
|
Asynchrone Operationen ausführen
|
 |
|
Autor/Einsender: Datum: |
|
Kevin Schlee 30.07.2007 |
|
Entwicklungsumgebung: |
|
VB.Net 2005 |
Framework: |
|
2.0 |
|
|
Das angefügte VB.NET-Projekt soll veranschaulichen, wie sich asynchrone Operationen leicht in die eigene Anwendung implementieren lassen.
Der Code ist entsprechend kommentiert und enthält die eigentliche Beschreibung des Vorgehens.
|
Das Modul APM enthält die Funktion DoSomething, welche eine längere Operation simuliert.
Sie erwartet einen Übergabeparameter und liefert naturgemäß auch einen Wert zurück.
Diese Funktion ist auch asynchron aufrufbar. Hierzu werden die Funktionen
BeginDoSomething und EndDoSomething verwendet. Im Startformular lässt sich die Methode
'synchron' und asynchron aufrufen. Ein weiterer Button demonstriert das Verhalten
der Oberfläche bei den beiden verschiedenen Aufrufmethoden.
|
|
|
|
Module APM
' Für die asynchron aufzurufende Funktion muss ein Delegat
' erstellt werden
Private Delegate Function DoSomethingDelegate(ByVal _
SomeParameter As Integer) As String
Private DelDoSomething As DoSomethingDelegate
Public Function DoSomething(ByVal SomeParameter As Integer) _
As String
' Simuliert zehn Sekunden Arbeit/Berechnung
Threading.Thread.Sleep(10000)
Return SomeParameter.ToString
End Function
Public Function BeginDoSomething(ByVal SomeParameter As _
Integer, ByVal CallBack As AsyncCallback, ByVal UserState _
As Object) As IAsyncResult
DelDoSomething = New DoSomethingDelegate(AddressOf DoSomething)
Return DelDoSomething.BeginInvoke(SomeParameter, CallBack, _
UserState)
End Function
Public Function EndDoSomething(ByVal Result As IAsyncResult) _
As String
Dim Userstate As String = CStr(Result.AsyncState)
Return DelDoSomething.EndInvoke(Result)
End Function
End Module
|
|
|
|
Das Download-Projekt ist ausführlich dokumentiert.
|
|
Windows-Version |
98/SE |
 |
|
ME |
 |
|
NT |
 |
|
2000 |
 |
|
XP |
 |
|
Vista |
 |
|
Win
7 |
 |
|
|
|
Download (18,7
kB)
|
Downloads bisher: [ 587 ]
|
|
|