OperationContractAttribute.IsTerminating Vlastnost

Definice

Získá nebo nastaví hodnotu, která označuje, zda operace služby způsobí, že server zavře relaci po odeslání zprávy odpovědi, pokud existuje.

public:
 property bool IsTerminating { bool get(); void set(bool value); };
public bool IsTerminating { get; set; }
member this.IsTerminating : bool with get, set
Public Property IsTerminating As Boolean

Hodnota vlastnosti

truepokud operace způsobí, že server zavře relaci, v opačném případě . false Výchozí formát je false.

Příklady

Následující příklad je služba, která implementuje kontrakt služby, který určuje tři operace. Služba vyžaduje stavové připojení. Pokud je první volání volajícího na jinou operaci než MethodOne, kanál se odmítne a vyvolá se výjimka. Když volající zahájí relaci voláním MethodOne, může tento volající kdykoli ukončit komunikační relaci voláním MethodThree. MethodTwo lze během relace volat libovolný počet.

[ServiceContractAttribute(SessionMode=SessionMode.Required)]  
public class InitializeAndTerminateService  
{  
  [OperationContract(  
    IsOneWay=true,  
    IsInitiating=true,  
    IsTerminating=false  
  )]  
  public void MethodOne()  
  {  
    return;  
  }  

  [OperationContract(  
    IsInitiating=false,  
    IsTerminating=false  
  )]  
  public int MethodTwo(int x, out int y)  
  {  
    y = 34;  
    return 0;  
  }  

  [OperationContract(  
    IsOneWay=true,  
    IsInitiating=false  
    IsTerminating=true  
  )]  
  public void MethodThree()  
  {  
    return;  
  }  
}  

Poznámky

IsTerminating Vlastnost použijte k označení, že volání operace služby ukončí komunikační relaci.

V klientské aplikaci hodnota IsTerminating set dává true WCF pokyn k zavření kanálu po přijetí odpovědi.

Ve službě se nastaví časovač a kanál se přeruší, pokud klient kanál během této doby nezavře.

Další informace o použití této vlastnosti s relacemi najdete v tématu Použití relací.

Poznámka

Pokud volající naslouchá OperationContext.OperationCompleted události pro OperationContractAttribute.IsTerminating operaci, je možné blokovat přijetí odpovědi. Správným způsobem, jak to vyřešit, je naplánovat práci na jiném vlákně, když OperationCompleted je vyvolána, a pak se okamžitě vrátit z této obslužné rutiny události.

Platí pro