Я не вижу success
, объявленного в приведенном выше коде как локальную переменную, и при этом я не вижу, что вы устанавливаете его в false. Может ли это быть членом класса, который устанавливается на true
при первом успешном вызове и затем остается таким же?
В любом случае весь блок кода можно переписать, чтобы было проще понять (и меньше подвержен ошибкам), например:
using (var client = new CAEServiceContractClient())
{
response = client.GetSecurityRecords(item);
totalRecords = response.TotalRecords;
securityListView.DataSource = response.SecurityItemColl;
securityListView.DataBind();
}
Оператор using
гарантирует, что после завершения блока using
(обычно или ненормально из-за исключения) переменная client
будет удалена (будет вызываться .Dispose()
), закрывая тем самым соединение.
РЕДАКТИРОВАТЬ: Как отметил Ладислав Мрнка, метод .Dispose()
ClientBase
имеет плохую привычку вызывать исключение в некоторых случаях. Обязательно реализуйте метод .Dispose()
в вашем частичном классе CAEServiceContractClient
, как описано здесь .