Application.GetCacheStatusForProject property (Project)

Ruft den Status eines angegebenen Auftrags ab, den der aktive Cache in Project Professional an das Project Server-Warteschlangensystem sendet. Schreibgeschützter PjCacheJobState-Wert.

Syntax

Ausdruck. GetCacheStatusForProject

expression Eine Variable, die ein Application-Objekt darstellt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
ProjectName Erforderlich String Der Name des Projekts; kann das aktive Projekt oder ein anderes geöffnetes Projekt sein.
ProjectJobType Erforderlich PjJobType Dies kann eine der PjJobType-Konstanten für den Speicher-, Veröffentlichungs- oder Eincheckvorgang sein.

HinwBemerkungeneise

Wenn Sie Project Professional verwenden, um einen Vorgang auszuführen, der eine der Warteschlangenmethoden in Project Server verwendet, z. B. speichern, veröffentlichen oder ein Projekt einchecken, sendet der Project Professional Cache eine Auftragsanforderung an das Project Server-Warteschlangensystem. Die GetCacheStatusForProject-Eigenschaft gibt den Status für den Warteschlangenauftrag an.

Beispiel

Das Makro TestCacheStatus im folgenden Beispiel speichert das aktive Projekt, ruft WaitForJob auf, um auf den erfolgreichen Abschluss der Warteschlange zu warten, und veröffentlicht dann das Projekt. Das WaitForJob-Makro überprüft in regelmäßigen Abständen den Auftragsstatus durch Aufrufen von GetCacheStatusForProject und gibt den Auftragsstatus im Direktfenster aus. Wenn der gleiche Status mehr als zehnmal hintereinander gefunden wird, geht das WaitForJob-Makro davon aus, dass ein Problem vorliegt, und wird beendet. Im Beispiel wird eine Sleep-Methode verwendet, die entweder in einer 64-Bit-Projektinstallation oder einer 32-Bit-Project-Installation ausgeführt werden kann.

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

Es folgt die Ausgabe für eine Wartezeit von 500 Millisekunden zwischen Statusmeldungen. Wenn die Netzwerklatenz größer ist, legen Sie die Wartezeit für ein längeres Intervall fest. Informationen zur Bedeutung von Ausgabewerten finden Sie in der PjCacheJobState-Enumeration . Der Wert 4 ist beispielsweise die pjCacheJobStateSuccess-Konstante . Wenn Sie TestCacheStatus ausführen, wenn keine Änderungen am Projekt vorgenommen wurden, wird der Status des Speicherauftrags mehrmals als -1 wiederholt, was dem Wert der pjCacheJobStateInvalid-Konstante entspricht.

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

Eigenschaftswert

PJCACHEJOBSTATE

Siehe auch

PjCacheJobState-EnumerationPjJobType-Enumeration

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.