Udostępnij za pośrednictwem


OperationContractAttribute.IsTerminating Właściwość

Definicja

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 MethodOnemetody , 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ń.

Dotyczy