upsvtm Com=Charger
tache.exe
Cet exemple ne fonctionne qu'à partir de la version .NET 2002 puisque cela nécessite que le noyau d'exécution de Visual Basicsupporte le multi-thread.
Public Const SynchronisationPrivee As Integer = 1
Public Const SynchronisationProtegee As Integer = 2
Public Const SynchronisationPublique As Integer = 3
Public Const SynchronisationLecturePartagee As Integer = 1
Public Const SynchronisationLectureExclusive As Integer = 2
Public Const SynchronisationEcriturePartagee As Integer = 3
Public Const SynchronisationEcritureExclusive As Integer = 4
Public MUpsKrn As IUpsKrn
Public MUpsSys As IUpsSys
Public S As IUpsSysSynchronisation
Public T1 As IUpsSysTache
Public C As IUpsKrnCaractere
Public Sub EcrireEcran(ByVal Libelle As String)
' =============================================
Form1.Ecran.AddItem Libelle
End Sub
Public Function PrincipalT1(ByVal T As IUpsSysTache) As
Long
' ==========================================================
On Error GoTo GestionErreur
EcrireEcran "Debut de la tâche " +
MUpsKrn.Caractere2DComBStr(T.NomTache())
S.Prendre SynchronisationLecturePartagee
MUpsSys.Attendre 1
EcrireEcran "T1 (1) : C=" + MUpsKrn.Caractere2DComBStr(C)
S.Lacher
S.Prendre SynchronisationLecturePartagee
MUpsSys.Attendre 1
EcrireEcran "T1 (2) : C=" + MUpsKrn.Caractere2DComBStr(C)
S.Lacher
S.Prendre SynchronisationLecturePartagee
MUpsSys.Attendre 1
EcrireEcran "T1 (3) : C=" + MUpsKrn.Caractere2DComBStr(C)
S.Lacher
S.Prendre SynchronisationLectureExclusive
MUpsSys.Attendre 1
EcrireEcran "T1 (4) : C=" + MUpsKrn.Caractere2DComBStr(C)
S.Lacher
S.Prendre SynchronisationLectureExclusive
MUpsSys.Attendre 1
EcrireEcran "T1 (5) : C=" + MUpsKrn.Caractere2DComBStr(C)
S.Lacher
S.Prendre SynchronisationLectureExclusive
MUpsSys.Attendre 1
EcrireEcran "T1 (6) : C=" + MUpsKrn.Caractere2DComBStr(C)
S.Lacher
T.SuspendreTache
Do
EcrireEcran "Je ne fais rien"
MUpsSys.Attendre 1
Loop
Exit Function
GestionErreur:
'=============
EcrireEcran Erreur UpsKrn-0 : L'exception suivante a été envoyée dans le
source '" + Err.Source + "' :"
EcrireEcran Err.Description
End Function
Private Sub Form_Load()
' =====================
On Error GoTo GestionErreur
Set MUpsKrn = CreateObject("UpsApp.UpsKrn")
Set MUpsSys = CreateObject("UpsApp.UpsSys")
Set S = MUpsSys.Synchronisation1(MUpsKrn.DComBStr2Caractere("ExempleDeSynchronisation"),
SynchronisationPrivee)
S.Prendre SynchronisationEcritureExclusive
Set T1 = MUpsSys.Tache1(MUpsKrn.DComBStr2Caractere("ExempleDeTache"),
MUpsKrn.DComAppel2Appel(HRESULT PrincipalT1([in] IUpsSys::Tache *T, [out,
retval] long *retval)", AddressOf PrincipalT1), False)
Set C = MUpsKrn.DComBStr2Caractere("coucou")
EcrireEcran "TP (1) : C=" + MUpsKrn.Caractere2DComBStr(C)
MUpsSys.Attendre 5
S.Lacher
S.Prendre SynchronisationEcriturePartagee
MUpsSys.Attendre 1
Set C = MUpsKrn.DComBStr2Caractere("coucou2")
EcrireEcran "TP (2) : C=" + MUpsKrn.Caractere2DComBStr(C)
S.Lacher
S.Prendre SynchronisationEcriturePartagee
MUpsSys.Attendre 1
Set C = MUpsKrn.DComBStr2Caractere("coucou3")
EcrireEcran "TP (3) : C=" + MUpsKrn.Caractere2DComBStr(C)
S.Lacher
S.Prendre SynchronisationEcriturePartagee
MUpsSys.Attendre 1
S.Lacher
MUpsSys.Attendre 5
If T1.EstSuspendue Then
EcrireEcran "T1 est suspendue"
Else
EcrireEcran "T1 n'est pas suspendue"
End If
T1.ReprendreTache
MUpsSys.Attendre 5
T1.ArreterTache 1
If T1.EstTerminee() Then
EcrireEcran "T1 est terminée"
End If
EcrireEcran "Code retour de T1=" + Str$(T1.CodeRetour())
Set T1 = Nothing
Set MUpsSys = Nothing
Set MUpsKrn = Nothing
Exit Sub
GestionErreur:
'=============
EcrireEcran Erreur UpsKrn-0 : L'exception suivante a été envoyée dans le
source '" + Err.Source + "' :"
EcrireEcran Err.Description
End Sub