Поделиться через


Свойство Application.GetCacheStatusForProject (Project)

Возвращает состояние указанного задания, которое активный кэш в Project профессиональный отправляет в систему очередей Project Server. PjCacheJobState только для чтения.

Синтаксис

выражение. GetCacheStatusForProject

выражение: переменная, представляющая объект Application.

Параметры

Имя Обязательный или необязательный Тип данных Описание
ProjectName Обязательный String Имя проекта; может быть активным проектом или другим открытым проектом.
ProjectJobType Обязательный PjJobType Может быть одной из констант PjJobType для операции сохранения, публикации или возврата.

Замечания

При использовании Project профессиональный для выполнения операции, которая использует один из методов очереди в Project Server, например сохранение обновления, публикацию или возврат проекта, кэш Project профессиональный отправляет запрос задания в систему очередей Project Server. Свойство GetCacheStatusForProject предоставляет состояние задания очереди.

Пример

Макрос TestCacheStatus в следующем примере сохраняет активный проект, вызывает WaitForJob, чтобы дождаться успешного завершения очереди, а затем публикует проект. Макрос WaitForJob периодически проверяет состояние задания путем вызова GetCacheStatusForProject и выводит состояние задания в окно Интерпретация. Если одно и то же состояние обнаруживается более десяти раз подряд, макрос WaitForJob предполагает наличие проблемы и завершает работу. В примере используется метод sleep , который можно запустить в 64-разрядной установке Project или 32-разрядной установке Project.

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

Ниже приведены выходные данные для времени ожидания в 500 миллисекундах между сообщениями о состоянии. Если задержка в сети больше, задайте время ожидания для более длительного интервала. Чтобы найти значение выходных значений, см. перечисление PjCacheJobState . Например, значение 4 является константой pjCacheJobStateSuccess . При запуске TestCacheStatus при отсутствии изменений в проекте состояние задания сохранения многократно повторяется как -1, что является значением константы 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

Значение свойства

PJCACHEJOBSTATE

См. также

Перечисление PjJobStatePjJobType

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.