| |
VB.NET - Ein- und UmsteigerBei Verwendung von Invoke wird Exception nicht ausgelöst. | | | Autor: sv00010 | Datum: 28.07.22 12:13 |
| Ich versuche gerade mit System.Reflection.MethodInfo eine Function aufzurufen.
Das hat soweit auch erstmal funktioniert.
Mein Problem ist, dass keine Exception ausgelöst wird, wo dies bei einer Ausführung ohne Invoke passiert.
Normalerweise wird eine Exception ausgelöst, wenn man versucht zwei Werte vom Typ System.Byte zu einem Gesamtergebnis zu addieren, welches größer ist, als System.Byte.MaxValue.
Die Exception in der Klassnbibliothek "Beispiel" wird nie ausgelöst.
Was mache ich falsch ?
Sub Test5()
Dim Assembly_Load As System.Reflection.Assembly = _
System.Reflection.Assembly.Load("Beispiel")
Dim Type_Beispiel As System.Type = _
Assembly_Load.GetType("Beispiel.CALCULATION")
Dim obj_Instance_Beispiel As System.Object = Nothing
Dim obj_Result_Invoke As System.Object = Nothing
Dim Array_objects_Invoke(3-1) As System.Object
Dim MethodInfo_Addition_Byte As System.Reflection.MethodInfo _
= Type_Beispiel.GetMethod("Addition_Byte")
obj_Instance_Beispiel = System.Activator.CreateInstance(Type_Beispiel)
Array_objects_Invoke(0) = CByte(System.Byte.MaxValue)
Array_objects_Invoke(1) = CByte(System.Byte.MaxValue)
Array_objects_Invoke(2) = CByte(0)
obj_Result_Invoke = MethodInfo_Addition_Byte.Invoke( _
obj_Instance_Beispiel, Array_objects_Invoke)
End Sub
Beitrag wurde zuletzt am 28.07.22 um 12:14:08 editiert. | |
Re: Bei Verwendung von Invoke wird Exception nicht ausgelöst. | | | Autor: Kuno60 | Datum: 29.07.22 01:50 |
| Hallo sv00010,
auch über Reflection - Invoke, wird eine OverflowException ausgelöst. Diese wird an TargetInvocationException weitergeleitet.
Mein Test:
Imports System.Reflection
Module Module1
Sub Main()
Dim ergebnis = Test1()
Stop
End Sub
Function Test1() As Integer
Dim t As Type = GetType(Module1)
Dim mi As MethodInfo = t.GetMethod("Addition_Byte")
Dim b1, b2 As Byte
b1 = 250 : b2 = 13 '250 + 13 = Überlauf
Return CInt(mi.Invoke(Nothing, {b1, b2}))
End Function
Function Addition_Byte(b1 As Byte, b2 As Byte) As Byte
Return b1 + b2
End Function
End Module Wo bei dir der Fehler liegt, kann ich deinem Code nicht entnehmen. | |
Re: Bei Verwendung von Invoke wird Exception nicht ausgelöst. | | | Autor: sv00010 | Datum: 29.07.22 11:12 |
| Dein Beispiel hat bei mir in Visual Studio 2017 funktioniert. Es entsteht die Fehlermeldung.
Ich programmiere in Visual Studio 2008, weil ich den Code für ein SmartDevice brauche.
Mir ist aufgefallen, dass ich bei mir die Werte wirklich als Object-Array übergeben muss.
Return CInt(mi.Invoke(Nothing, {b1, b2})) Das mit dem direkten Erstellen des Bytearray funktioniert bei mir nicht.
Ich vermute, dass das nicht auslösen der Exception damit etwas zu tun haben könnte.
Beitrag wurde zuletzt am 29.07.22 um 11:15:27 editiert. | |
| 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 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-2024 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
|
|