OperationContractAttribute.IsTerminating Egenskap

Definition

Hämtar eller anger ett värde som anger om tjänståtgärden gör att servern stänger sessionen efter att svarsmeddelandet har skickats.

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

Egenskapsvärde

trueom åtgärden gör att servern stänger sessionen, annars . false Standardvärdet är false.

Exempel

Följande exempel är en tjänst som implementerar ett tjänstkontrakt som anger tre åtgärder. Tjänsten kräver en tillståndskänslig anslutning. Om en anropares första anrop är till någon annan åtgärd än MethodOnenekas kanalen och ett undantag utlöses. När en anropare initierar en session genom att anropa MethodOnekan anroparen avsluta kommunikationssessionen när som helst genom att anropa MethodThree. MethodTwo kan anropas valfritt antal gånger under en session.

[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;
  }
}

Kommentarer

Använd egenskapen IsTerminating för att ange att samtal av en tjänståtgärd avslutar kommunikationssessionen.

I ett klientprogram IsTerminating instrueras WCF att true stänga kanalen när svaret har kommit.

I en tjänst anges en timer och kanalen avbryts om klienten inte stänger kanalen inom den perioden.

Mer information om hur du använder den här egenskapen med sessioner finns i Använda sessioner.

Note

Om en anropare lyssnar efter OperationContext.OperationCompleted händelsen för en OperationContractAttribute.IsTerminating åtgärd kan du blockera när svaret tas emot. Det rätta sättet att hantera detta är att schemalägga arbete på en annan tråd när OperationCompleted det har aktiverats och sedan omedelbart återgå från den händelsehanteraren.

Gäller för