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á určuje, zda operace služby způsobí ukončení relace 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, jinak , false. Výchozí hodnota 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 jiné operace než MethodOne, kanál se odmítne a vyvolá se výjimka. Když volající zahájí relaci voláním MethodOne, může volající ukončit komunikační relaci kdykoli voláním MethodThree.
MethodTwo lze volat libovolný početkrát během relace.
[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 Pomocí vlastnosti můžete označit, že volání operace služby ukončí komunikační relaci.
V klientské aplikaci je hodnota IsTerminating nastavená tak, aby true wcf po přijetí odpovědi zavřela kanál.
Ve službě je časovač nastavený a kanál se přeruší, pokud klient kanál v daném období nezavře.
Další informace o použití této vlastnosti s relacemi naleznete v tématu Použití relací.
Poznámka:
Pokud volající naslouchá OperationContext.OperationCompleted události operace OperationContractAttribute.IsTerminating , je možné zablokovat, když se přijme odpověď. Správným způsobem, jak to zpracovat, je naplánovat práci na jiném vlákně při OperationCompleted vyvolání a okamžitě se vrátit z této obslužné rutiny události.