OperationContractAttribute.IsTerminating Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia wartość wskazującą, czy operacja usługi powoduje zamknięcie sesji przez serwer po wysłaniu komunikatu odpowiedzi, jeśli istnieje.
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
Wartość właściwości
true
jeśli operacja powoduje zamknięcie sesji przez serwer, w przeciwnym razie false
. Wartość domyślna to false
.
Przykłady
Poniższy przykład to usługa, która implementuje kontrakt usługi, który określa trzy operacje. Usługa wymaga połączenia stanowego. Jeśli pierwsze wywołanie elementu wywołującego dotyczy dowolnej operacji innej niż MethodOne
, kanał jest odrzucany i zgłaszany jest wyjątek. Gdy obiekt wywołujący inicjuje sesję przez wywołanie MethodOne
metody , wywołujący może zakończyć sesję komunikacji w dowolnym momencie przez wywołanie metody MethodThree
.
MethodTwo
można wywołać dowolną liczbę razy podczas sesji.
[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;
}
}
Uwagi
IsTerminating Użyj właściwości , aby wskazać, że wywołanie operacji usługi kończy sesję komunikacji.
W aplikacji klienckiej wartość ustawiona IsTerminating na true
instruuje program WCF o zamknięciu kanału po nadejściu odpowiedzi.
W usłudze jest ustawiany czasomierz, a kanał przerywa, jeśli klient nie zamknie kanału w tym okresie.
Aby uzyskać więcej informacji na temat używania tej właściwości z sesjami, zobacz Using Sessions (Korzystanie z sesji).
Uwaga
Jeśli obiekt wywołujący nasłuchuje OperationContext.OperationCompleted zdarzenia dla OperationContractAttribute.IsTerminating operacji, można zablokować po odebraniu odpowiedzi. Właściwym sposobem obsługi tego zadania jest zaplanowanie pracy nad innym wątkiem, gdy OperationCompleted zostanie zgłoszony, a następnie natychmiast powrócić z tej procedury obsługi zdarzeń.