Свойство 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 и обратная связь.