Application.GetCacheStatusForProject プロパティ (Project)
Project Professionalのアクティブ キャッシュが Project Server キュー システムに送信する指定したジョブの状態を取得します。 読み取り専用 PjCacheJobState。
構文
expression. GetCacheStatusForProject
式Application オブジェクトを表す変数。
パラメーター
名前 | 必須 / オプション | データ型 | 説明 |
---|---|---|---|
ProjectName | 必須 | String | プロジェクトの名前。は、アクティブなプロジェクトまたは開いている別のプロジェクトにすることができます。 |
ProjectJobType | 必須 | PjJobType | 保存、発行、またはチェックイン操作の PjJobType クラスの定数の 1 つを指定できます。 |
注釈
Project Professionalを使用して、更新プログラムの保存、発行、プロジェクトのチェックインなど、Project Server 内のいずれかのキュー メソッドを使用する操作を実行すると、Project Professional キャッシュは Project Server キュー システムにジョブ要求を送信します。 キュー ジョブの状態は、GetCacheStatusForProject プロパティによって公開されます。
例
次の例の TestCacheStatus マクロは、アクティブなプロジェクトを保存し、 WaitForJob を 呼び出してキューが正常に完了するのを待ってから、プロジェクトを発行します。 WaitForJob マクロは、GetCacheStatusForProject を呼び出してジョブの状態を定期的にチェックし、ジョブの状態をイミディエイト ウィンドウに出力します。 同じ状態が 10 回以上連続して検出された場合、 WaitForJob マクロは問題があると見なして終了します。 この例では、64 ビット の Project インストールまたは 32 ビット の Project インストールで実行できる Sleep メソッドを使用します。
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
関連項目
PjCacheJobState 列挙PjJobType 列挙
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。