1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| Imports System.Data
Imports System.Runtime.InteropServices
Imports System.Threading.Thread
Imports System.Threading
Imports System.EventArgs
Public Class ScriptControlRD
Inherits System.EventArgs
'Cette partie là permet de décharger linstance de la classe (Set Nothing), redonne au Framework (Dispose)
Implements IDisposable
Dim disposed As Boolean = False
Delegate Sub AfterAddCode()
Event _AfterAddCode As AfterAddCode
Delegate Sub AfterRun(ByVal Rseult As Object)
Event _AfterRun As AfterRun
Public Overloads Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
Protected Overridable Overloads Sub Dispose(ByVal disposing As Boolean)
If disposed = False Then
If disposing Then
disposed = True
End If
End If
End Sub
Protected Overrides Sub Finalize()
Dispose(False)
End Sub
'Fin Dispose!
Private scr As Object = Nothing
Private _Language As String
Private _Code As String
Private _Metthode As String
Public Property Language As String
Get
Return _Language
End Get
Set(value As String)
_Language = value
scr.Language = value
End Set
End Property
Public Sub New()
scr = CreateObject("ScriptControl") 'On affect un référence à un objet sens (Set)
End Sub
Public Sub Run(Optional ByVal Metthode As String = "")
_Metthode = Metthode
Dim t As New Thread(AddressOf RunThreadProc)
t.Start()
End Sub
Private Sub AddCodeThreadProc()
scr.AddCode(_Code) : RaiseEvent _AfterAddCode()
End Sub
Private Sub RunThreadProc()
Dim Result As Object = Nothing
If _Metthode.Trim.ToString <> "" Then
Try
Catch ex As Exception
Return
End Try
Result = scr.run(_Metthode)
RaiseEvent _AfterRun(Result)
End If
End Sub
Public Sub AddObject(Virtuel As String, Phisique As Object)
scr.AddObject(Virtuel, Phisique, True)
End Sub
Public Sub ModulesAdd(Modul As String)
scr.Modules.Add(Modul)
End Sub
Public Sub AddCode(Code)
_Code = Code
Dim t As New Thread(AddressOf AddCodeThreadProc)
t.Start()
End Sub
'En .net, la méthode CeateObject nexiste pas il faut limplémenter !
Private Function CreateObject(ByVal app As String) As Object
Dim AppType As Object = Type.GetTypeFromProgID(app)
Dim ApplInst As Object = Activator.CreateInstance(AppType)
Return ApplInst
End Function
End Class |
Partager