Tache

Commande de compilation...
Commande d'enregistrement des ActiveX...
Commande d'exécution...
Fichiers sources...

Dans le menu Project - References de Visual Basic, il faut importer les déclarations des modules Up ! Kernel et Up ! System en cochant les cases correspondantes.

Revenir en haut de la page...

upsvtm Com=Charger

Revenir en haut de la page...

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.

Revenir en haut de la page...

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

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 Else EcrireEcran "T1 n'est pas suspendue" End If T1.ReprendreTache

MUpsSys.Attendre 5
T1.ArreterTache 1
If T1.EstTerminee() Then 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

Revenir en haut de la page...