FtpWebResponse IDisposable затваря ли отговора?

Използвам следния код в моята програма, трябва ли все пак да извикам response.close()? Или изпълнението FtpWebResponse IDisposable затваря отговора?

using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{

}

По принцип трябва ли да направя това?

using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
    response.close();
}

person naed21    schedule 24.10.2013    source източник
comment
Запитайте се дали ще ми струва повече, ако методът за затваряне бъде извикан два пъти?   -  person Izikon    schedule 24.10.2013
comment
@Izikon Ще бъде ли така? Доколкото знам, цялото ми приложение ще се срине, ако го направя. Може би бихте могли да бъдете малко по-конкретни, вместо да задавате въпрос.   -  person naed21    schedule 24.10.2013
comment
Този въпрос е интересно четиво: stackoverflow.com/questions/3119288/   -  person Habib    schedule 24.10.2013


Отговори (1)


Не, не е нужно да се обаждате на Close, тъй като Dispose вече го прави. FtpWebResponse е наследен от WebResponse и има изрично имплементиран Dispose, който вътрешно извиква Close.

Код за WebResponse.cs от: http://www.dotnetframework.org/default.aspx/4@0/4@0/DEVDIV_TFS/Dev10/Releases/RTMRel/ndp/fx/src/Net/System/Net/WebResponse@cs/1305376/WebResponse@cs

 /// <internalonly>
        void IDisposable.Dispose() {
            try
            {
                Close();
                OnDispose();
            }
            catch { }
        }
person Habib    schedule 24.10.2013