Propiedad Application.GetCacheStatusForProject (Project)
Obtiene el estado de un trabajo especificado que la memoria caché activa de Project Profesional envía al sistema de cola de Project Server. PjCacheJobState de solo lectura.
Sintaxis
expresión. GetCacheStatusForProject
expresión Variable que representa un objeto Application.
Parámetros
Nombre | Obligatorio/opcional | Tipo de datos | Descripción |
---|---|---|---|
ProjectName | Obligatorio | String | Nombre del proyecto; puede ser el proyecto activo o un proyecto diferente que está abierto. |
ProjectJobType | Obligatorio | PjJobType | Puede ser una de las constantes PjJobType para la operación de guardar, publicar o proteger. |
Comentarios
Cuando se usa Project Profesional para realizar una operación que usa uno de los métodos de cola en Project Server, como guardar una actualización, publicar o proteger un proyecto, la memoria caché de Project Profesional envía una solicitud de trabajo al sistema de cola de Project Server. La propiedad GetCacheStatusForProject expone el estado del trabajo de la cola.
Ejemplo:
La macro TestCacheStatus del ejemplo siguiente guarda el proyecto activo, llama a WaitForJob para esperar a que la cola finalice correctamente y, a continuación, publica el proyecto. La macro WaitForJob comprueba periódicamente el estado del trabajo llamando a GetCacheStatusForProject e imprime el estado del trabajo en la ventana Inmediato. Si encuentra el mismo estado más de diez veces seguidas, la macro WaitForJob supone que hay un problema y se cierra. En el ejemplo se usa un método Sleep que se puede ejecutar en una instalación de Project de 64 bits o en una instalación de Project de 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
A continuación se muestra la salida de un tiempo de espera de 500 milisegundos entre los mensajes de estado. Si la latencia de red es mayor, establezca el tiempo de espera para un intervalo más largo. Para encontrar el significado de los valores de salida, vea la enumeración PjCacheJobState . Por ejemplo, el valor 4 es la constante pjCacheJobStateSuccess . Si ejecuta TestCacheStatus cuando no se realizan cambios en el proyecto, el estado del trabajo de guardado se repite muchas veces como -1, que es el valor 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
Valor de propiedad
PJCACHEJOBSTATE
Consulte también
PjCacheJobState (enumeración)PjJobType (enumeración)
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.