次の方法で共有


WorkflowQueue.Dequeue メソッド

定義

WorkflowQueue の先頭にあるオブジェクトを削除し、返します。

public:
 System::Object ^ Dequeue();
public object Dequeue ();
member this.Dequeue : unit -> obj
Public Function Dequeue () As Object

戻り値

WorkflowQueue の先頭から削除されたオブジェクト。

例外

次のコード例は、WorkflowQueue メソッドを呼び出して WorkflowQueuingService.GetWorkflowQueue を作成する方法を示しています。 また、Count プロパティを使用して、現在のキューにメッセージが存在するかどうかを確認します。 最後に、Dequeue メソッドを使用して、キューの先頭のオブジェクトを削除して返します。

このコード例は、FileSystemEvent.cs ファイルに含まれている、ファイル監視アクティビティの SDK サンプルの一部です。 詳細については、「 ファイル システム ウォッチャー アクティビティ」を参照してください。

private bool ProcessQueueItem(ActivityExecutionContext context)
{
    WorkflowQueuingService qService = context.GetService<WorkflowQueuingService>();
    if (!qService.Exists(this.QueueName))
    {
        return false;
    }

    WorkflowQueue queue = qService.GetWorkflowQueue(this.QueueName);

    // If the queue has messages, then process the first one
    if (queue.Count == 0)
    {
        return false;
    }

    FileWatcherEventArgs e = (FileWatcherEventArgs)queue.Dequeue();

    // Raise the FileSystemEvent
    base.RaiseGenericEvent<FileWatcherEventArgs>(FileSystemEvent.FileWatcherEventHandlerEvent, this, e);

    DoUnsubscribe(context, this);
    DeleteQueue(context);
    return true;
}
Private Function ProcessQueueItem(ByVal context As ActivityExecutionContext) As Boolean

    Dim qService As WorkflowQueuingService = context.GetService(Of WorkflowQueuingService)()

    If Not qService.Exists(Me.QueueName) Then
        Return False
    End If

    Dim Queue As WorkflowQueue = qService.GetWorkflowQueue(Me.QueueName)

    ' If the queue has messages, then process the first one
    If Queue.Count = 0 Then
        Return False
    End If

    Dim e As FileWatcherEventArgs = CType(Queue.Dequeue(), FileWatcherEventArgs)

    ' Raise the FileSystemEvent
    MyBase.RaiseGenericEvent(Of FileWatcherEventArgs)(FileSystemEvent.FileWatcherEventHandlerEvent, Me, e)
    DoUnsubscribe(context, Me)
    DeleteQueue(context)
    Return True
End Function

注釈

Count をチェックして、WorkflowQueue を呼び出す前に Dequeue が空であるかどうかを確認できます。または、InvalidOperationException をキャッチできます。

適用対象

こちらもご覧ください