| |

VB.NET - FortgeschritteneRe: AsycCallback bei Exception innerhalb des asynchronen Aufrufs | |  | Autor: Drapondur | Datum: 23.03.07 22:05 |
| Hallo,
und seltsamer Weise wird wie bereits geschildert die Callbackmethode aufgerufen.
Ich schreibe Dir hier mal eine Beispielklasse hin. Damit läßt sich gut verfolgen, wie sich das mit den Exeptions bei asynchronen Delegaten verhält.
Wenn Du es im Debugger laufen läßt und die einzelnen Schritte verfolgst, wirst Du sehen was passiert.
Das Property ISCompleted der IAsyncResult ist in dem Moment auch True
Tja, eine asynchron ausgeführte Methode ist eben auch dann fertig, wenn Sie durch eine Exeption abgebrochen wurde.
Public Class Form1
Friend WithEvents RunButton As System.Windows.Forms.Button
Friend WithEvents chkExInBegin As System.Windows.Forms.CheckBox
Friend WithEvents chkExInMethod As System.Windows.Forms.CheckBox
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
MyBase.OnLoad(e)
'Ein paar Controls zur Form tun
Me.RunButton = New System.Windows.Forms.Button
Me.chkExInBegin = New System.Windows.Forms.CheckBox
Me.chkExInMethod = New System.Windows.Forms.CheckBox
Me.RunButton.Location = New System.Drawing.Point(12, 57)
Me.RunButton.Name = "RunButton"
Me.RunButton.Size = New System.Drawing.Size(75, 23)
Me.RunButton.Text = "Run"
Me.chkExInBegin.AutoSize = True
Me.chkExInBegin.Location = New System.Drawing.Point(12, 12)
Me.chkExInBegin.Name = "chkExInBegin"
Me.chkExInBegin.Size = New System.Drawing.Size(114, 17)
Me.chkExInBegin.Text = "Exception in Begin"
Me.chkExInMethod.AutoSize = True
Me.chkExInMethod.Location = New System.Drawing.Point(12, 34)
Me.chkExInMethod.Name = "chkExInMethod"
Me.chkExInMethod.Size = New System.Drawing.Size(129, 17)
Me.chkExInMethod.Text = "Exception in Methode"
Me.Controls.Add(Me.chkExInMethod)
Me.Controls.Add(Me.chkExInBegin)
Me.Controls.Add(Me.RunButton)
End Sub
Private Sub RunButton_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) _
Handles RunButton.Click
Dim worker As New Worker
Stop
worker.ThrowInBegin = chkExInBegin.Checked
worker.ThrowInMethod = chkExInMethod.Checked
Try
worker.BeginMethode(AddressOf CallBack, worker)
Catch ex As Exception
Stop
MsgBox(ex.ToString)
End Try
End Sub
Private Sub CallBack(ByVal ar As IAsyncResult)
Try
Stop
Dim worker As Worker = CType(ar.AsyncState, Worker)
Dim ret As String = worker.EndMethode(ar)
MsgBox("Return Value " & ret)
Catch ex As Exception
Stop
MsgBox(ex.ToString)
End Try
End Sub
End Class
Public Class Worker
Public ThrowInBegin As Boolean
Public ThrowInMethod As Boolean
Private Delegate Function MethodenDele() As String
Public Function Methode() As String
Stop
If ThrowInMethod Then
'Hier wird im Debugmodus das komische Hinweisfenster
'aufgehen. Einfach mit F5 oder F8/F11 weitermachen.
Throw New ApplicationException("Exception aus Methode selbst")
End If
Return "Methode aufgerufen"
End Function
Public Function BeginMethode(ByVal cb As AsyncCallback, ByVal args As Object) _
As IAsyncResult
Stop
If ThrowInBegin Then
Throw New ApplicationException("Exception aus BeginMethode")
End If
Dim d As New MethodenDele(AddressOf Methode)
Return d.BeginInvoke(cb, args)
End Function
Public Function EndMethode(ByVal ar As IAsyncResult) As String
Try
Stop
Dim oAr As Runtime.Remoting.Messaging.AsyncResult
oAr = CType(ar, Runtime.Remoting.Messaging.AsyncResult)
Dim d As MethodenDele
d = CType(oAr.AsyncDelegate, MethodenDele)
Return d.EndInvoke(ar)
Catch ex As Exception
Stop
Throw
End Try
End Function
End Class Ciao
D. |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevCoolbar 3.0 
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|