Share via


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 kullanmayı 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ışı hizmet örneği bir ile karşılaştığında hizmet ana bilgisayarının hangi eylemi gerçekleştirmesi InstanceLockedExceptiongerektiğini belirtin. Hizmet ana bilgisayarı, başka bir InstanceLockedException sahip tarafından zaten kilitlenmiş bir örneği kilitlemeye çalıştığında bir alır. Olası değerler aşağıdaki listede yer alıyor:

  • Yok. Hizmet ana bilgisayar örneği ve geçişleri kilitlemek denemez InstanceLockedException çağırana.

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

  • AgresifRetry. Hizmet ana bilgisayarının reattempts bir üssel olarak artan gecikme ve geçişleri örnekle kilitlemek InstanceLockedException dizisi sonunda çağırana. 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