OperationContractAttribute.IsTerminating 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定值,這個值表示服務作業在傳送回覆訊息 (如果有的話) 之後,是否導致伺服器關閉該工作階段。
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
屬性值
如果作業會導致伺服器關閉工作階段,則為 true
,否則為 false
。 預設為 false
。
範例
下列範例是一個實作服務合約的服務,此合約指定三個作業。 此服務需要一個可設定狀態的連線。 若呼叫者先呼叫其他作業,而非 MethodOne
,通道會拒絕並擲回例外狀況。 當呼叫者呼叫 MethodOne
以初始化工作階段時,該呼叫者隨時可呼叫 MethodThree
終止通訊工作階段。
MethodTwo
可以在會話期間呼叫任意次數。
[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;
}
}
備註
使用 IsTerminating 屬性,表示呼叫某個服務作業會終止通訊工作階段。
在用戶端應用程式中,設為 的值 IsTerminating ,指示 true
WCF 在回復送達之後關閉通道。
服務中會設定計時器,若用戶端沒有在該時段內關閉通道,通道就會中止。
如需搭配會話使用此屬性的詳細資訊,請參閱 使用會話。
注意
如果呼叫者正在接聽 OperationContext.OperationCompleted 作業的 OperationContractAttribute.IsTerminating 事件,當收到回應時,它可能會封鎖。 處理這種情況的正確方式是,當引發 OperationCompleted 時在另一個執行緒上排程工作,然後立即從該事件處理常式傳回。