2012-02-29 8 views
0

私はOperationContextScope scope = new OperationContextScope(i.InnerChannel)を使用してwcfサービスを呼び出すC#アプリケーションを持っています。wcf OperationContextScope dispose

私はOperationContextScopeをusingステートメントで処理できないように、接続を開いたままにしておく必要があります。しかし、メモリプロファイラを見ると、私は何百ものOperationContextScopeを見ています。私はスコープを処分する必要がありますが、私が.Dispose()を呼び出すと、エラーが発生します。なぜ私はスコープを処分できないのか分かりません。

誰でもOperationContextScopeを正しく処分する方法を知っていますか?以下は私のコードの一部です。 http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontextscope.aspxから

   BasicHttpBinding wsbinding = null;     
       OperationContextScope scope = null; 

        wsbinding = new BasicHttpBinding(BasicHttpSecurityMode.None); 
        wsbinding.MaxBufferSize = 2147483647; 
        wsbinding.MaxReceivedMessageSize = 2147483647; 
        wsbinding.Name = "BasicHttpBinding_Iretail"; 



       i = new IretailClient(wsbinding, new EndpointAddress(commonStuff.EndpointAddress)); 

       scope = new OperationContextScope(i.InnerChannel); 

答えて

2

OperationContextScopeが作成されると、現在のOperationContext が保存され、新しいのOperationContextが Currentプロパティによって返されたものとなります。 OperationContextScopeが配置されると、 元のOperationContextが復元されます。

明らかに、作成された逆の順序で配置する必要があります。

scope.Dispose(); 
+0

こんにちは、私は、「Usingステートメント」を使用することはできません私はScope.Dispose()を呼び出すとき –

+0

が、私はそれが故障して配置されていますというエラーを取得し、「使用」を使用せずに処分行う方法を知っておく必要があります/ –

+0

?あなたはDispose()に電話します...他に何を知っておく必要がありますか? –

関連する問題