Partager via


Propriété Application.GetCacheStatusForProject (Project)

Obtient l’état d’un travail spécifié que le cache actif dans Project Professionnel envoie au système de file d’attente Project Server. PjCacheJobState en lecture seule.

Syntaxe

expression. GetCacheStatusForProject

expressionUne variable qui représente un objetApplication.

Paramètres

Nom Requis/Facultatif Type de données Description
ProjectName Requis String Nom du projet ; peut être le projet actif ou un autre projet ouvert.
ProjectJobType Requis PjJobType Il peut s’agir de l’une des constantes PjJobType pour l’opération d’enregistrement, de publication ou d’archivage.

Remarques

Lorsque vous utilisez Project Professionnel pour effectuer une opération qui utilise l’une des méthodes de file d’attente dans Project Server, comme l’enregistrement d’une mise à jour, la publication ou l’archivage d’un projet, le cache Project Professionnel envoie une demande de travail au système de file d’attente Project Server. La propriété GetCacheStatusForProject expose l’état du travail de file d’attente.

Exemple

La macro TestCacheStatus dans l’exemple suivant enregistre le projet actif, appelle WaitForJob pour attendre que la file d’attente se termine correctement, puis publie le projet. La macro WaitForJob vérifie régulièrement l’état du travail en appelant GetCacheStatusForProject et affiche l’état du travail dans la fenêtre Exécution. Si elle trouve le même état plus de dix fois de suite, la macro WaitForJob suppose qu’il y a un problème et se ferme. L’exemple utilise une méthode Sleep qui peut être exécutée dans une installation project 64 bits ou une installation project 32 bits.

Option Explicit

#If Win64 Then
    Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongLong)
#Else
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

' Save and publish the active project; wait for the queue after each operation.
Sub TestCacheStatus()
    Const millisec2Wait = 500   ' Number of milliseconds to sleep between status messages.
    
    Application.FileSave
    If WaitForJob(PjJobType.pjCacheProjectSave, millisec2Wait) Then
        Debug.Print "Save completed ..."
    
        Application.Publish
        If WaitForJob(PjJobType.pjCacheProjectPublish, millisec2Wait) Then
            Debug.Print "Publish completed: " & ActiveProject.Name
        End If
    Else
        Debug.Print "Save job not completed"
    End If
End Sub

' Check the cache job state for a save, publish, or check-in operation.
Function WaitForJob(job As PjJobType, msWait As Long) As Boolean
    ' Number of times the same job status is repeated until WaitForJob exits with error.
    Const repeatedLimit = 10
    
    Dim jobState As Integer
    Dim previousJobState As Integer
    Dim bail As Integer
    Dim jobType As String
    
#If Win64 Then
    Dim millisec As LongLong
    millisec = CLngLng(msWait)
#Else
    Dim millisec As Long
    millisec = msWait
#End If

    WaitForJob = True
    
    Select Case job
        Case PjJobType.pjCacheProjectSave
            jobType = "Save"
        Case PjJobType.pjCacheProjectPublish
            jobType = "Publish"
        Case PjJobType.pjCacheProjectCheckin
            jobType = "Checkin"
        Case Else
            jobType = "unknown"
    End Select

    bail = 0
    
    If (jobType = "unknown") Then
        WaitForJob = False
    Else
        Do
            jobState = Application.GetCacheStatusForProject(ActiveProject.Name, job)
            Debug.Print jobType & " job state: " & jobState
            
            ' Bail out if something is wrong.
            If jobState = previousJobState Then bail = bail + 1
            If bail > repeatedLimit Then
                WaitForJob = False
                Exit Do
            End If
            
            previousJobState = jobState
            
            Sleep (msWait)
        Loop While Not (jobState = PjCacheJobState.pjCacheJobStateSuccess)
    End If
End Function

Voici la sortie d’un délai d’attente de 500 millisecondes entre les messages d’état. Si la latence du réseau est plus élevée, définissez le temps d’attente pour un intervalle plus long. Pour trouver la signification des valeurs de sortie, consultez l’énumération PjCacheJobState . Par exemple, la valeur 4 est la constante pjCacheJobStateSuccess . Si vous exécutez TestCacheStatus quand aucune modification n’est apportée au projet, l’état de la tâche d’enregistrement se répète plusieurs fois comme -1, ce qui correspond à la valeur de la constante pjCacheJobStateInvalid .

Save job state: 4
Save completed ...
Publish job state: -1
Publish job state: 3
Publish job state: 3
Publish job state: 4
Publish completed: WinProj test 1

Valeur de la propriété

PJCACHEJOBSTATE

Voir aussi

PjCacheJobState, énumérationPjJobType, énumération

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.