OperationContractAttribute.IsTerminating Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
true
pokud 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.