| |

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.
Grüße, Kuno
---------------
Hobbyprogrammierer
VB6 bis VB17 |  |
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! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats August 2022 Dieter OtterPopUp-Menü wird nicht angezeigt :-(In diesem Tipp verraten wir Ihnen, wie Sie Probleme mit PopUp-Menüs umgehen können, wenn diese unter bestimmten Umständen einfach nicht angezeigt werden. TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|