Dil

SqlWorkflowInstanceStore.InstanceLockedExceptionAction Özellik

Tanım

Kalıcılık sağlayıcısı bir InstanceLockedExceptionyakaladığında gerçekleştirilecek eylemi belirtir.

public:
 property System::Activities::DurableInstancing::InstanceLockedExceptionAction InstanceLockedExceptionAction { System::Activities::DurableInstancing::InstanceLockedExceptionAction get(); void set(System::Activities::DurableInstancing::InstanceLockedExceptionAction value); };
public System.Activities.DurableInstancing.InstanceLockedExceptionAction InstanceLockedExceptionAction { get; set; }
member this.InstanceLockedExceptionAction : System.Activities.DurableInstancing.InstanceLockedExceptionAction with get, set
Public Property InstanceLockedExceptionAction As InstanceLockedExceptionAction

Özellik Değeri

Kalıcılık sağlayıcısı bir yakaladığında gerçekleştirilecek eylem InstanceLockedException

Örnekler

Aşağıdaki kod örneği, içinde SqlWorkflowInstanceStoreInstanceLockedExceptionAction'ın kullanılmasını gösterir.

static void Main(string[] args)
{
    // Create service host.
    WorkflowServiceHost host = new WorkflowServiceHost(new CountingWorkflow(), new Uri(hostBaseAddress));

    // Add service endpoint.
    host.AddServiceEndpoint("ICountingWorkflow", new BasicHttpBinding(), "");

    // Define SqlWorkflowInstanceStoreBehavior:
    //   Set interval to renew instance lock to 5 seconds.
    //   Set interval to check for runnable instances to 2 seconds.
    //   Instance Store does not keep instances after it is completed.
    //   Select exponential back-off algorithm when retrying to load a locked instance.
    //   Instance state information is compressed using the GZip compressing algorithm.
    SqlWorkflowInstanceStoreBehavior instanceStoreBehavior = new SqlWorkflowInstanceStoreBehavior(connectionString);
    instanceStoreBehavior.HostLockRenewalPeriod = new TimeSpan(0, 0, 5);
    instanceStoreBehavior.RunnableInstancesDetectionPeriod = new TimeSpan(0, 0, 2);
    instanceStoreBehavior.InstanceCompletionAction = InstanceCompletionAction.DeleteAll;
    instanceStoreBehavior.InstanceLockedExceptionAction = InstanceLockedExceptionAction.AggressiveRetry;
    instanceStoreBehavior.InstanceEncodingOption = InstanceEncodingOption.GZip;
    host.Description.Behaviors.Add(instanceStoreBehavior);

    // Open service host.
    host.Open();

    // Create a client that sends a message to create an instance of the workflow.
    ICountingWorkflow client = ChannelFactory<ICountingWorkflow>.CreateChannel(new BasicHttpBinding(), new EndpointAddress(hostBaseAddress));
    client.start();

    Console.WriteLine("(Press [Enter] at any time to terminate host)");
    Console.ReadLine();
    host.Close();
}

Açıklamalar

Bir iş akışı hizmeti örneği bir ile karşılaştığında bir hizmet konağı tarafından hangi eylemin InstanceLockedExceptiongerçekleştirileceğini belirtin. Hizmet konağı, başka bir InstanceLockedException sahip tarafından zaten kilitlenmiş bir örneği kilitlemeye çalıştığında alır. Olası değerler aşağıdaki listede yer alıyor:

  • Yok. Hizmet ana bilgisayarı örneği kilitlemeye çalışmaz ve öğesini çağırana geçirir InstanceLockedException .

  • BasicRetry. Hizmet konağı, örneği doğrusal bir yeniden deneme aralığıyla kilitlemeyi yeniden dener ve özel durumu sıranın sonunda çağırana geçirir.

  • AggressiveRetry. Hizmet konağı, örneği üstel olarak artan bir gecikmeyle kilitlemeyi yeniden kullanır ve öğesini sıranın sonunda çağırana geçirir InstanceLockedException . Kilidi mümkün olan en kısa sürede alma girişiminde aralıklar başlangıçta kısadır ve başarısız olan her girişimde aralıklar daha da büyür.

Şunlara uygulanır