2012-02-29 2 views
0

У меня есть приложение C#, которое вызывает wcf serivce, используя OperationContextScope scope = new OperationContextScope (i.InnerChannel);wcf OperationContextScope dispose

Мне нужно закрыть соединения, поэтому я не могу распоряжаться OperationContextScope оператором Using. Однако, глядя на профилировщик памяти, я вижу сотни OperationContextScope. Мне нужно удалить область действия, но когда я вызываю .Dispose(), я получаю сообщение об ошибке. Я понятия не имею, почему я не могу распоряжаться областью.

Кто-нибудь знает, как правильно распорядиться OperationContextScope? Ниже приведена часть моего кода.

   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

От http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontextscope.aspx:

Когда OperationContextScope создается, текущий OperationContext хранится и новый OperationContext становится один возвращаемый Current собственности. Когда вызывается OperationContextScope, восстанавливается исходный OperationContext .

Очевидно, что они должны быть расположены в обратном порядке, они были созданы.

scope.Dispose(); 
+0

Привет, я не могу использовать «Использование заявления» Я должен знать, как делать распоряжаться без использования «Использование» –

+0

, когда я называю Scope.Dispose() Я получаю сообщение об ошибке сказав, что это расположено в порядке:/ –

+0

? вы вызываете Dispose() ... Что еще вам нужно знать? –

Смежные вопросы