рдЖрдИрдбреА-рдкреНрд░рдпреЛрдЬреНрдп - рдХрд┐ рдЖрдкрдХреА рдорд╛рдБ рдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХреАред рднрд╛рдЧ 1

рдпрд╣ рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред рд▓реЗрдЦ 2008 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред 10 рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж, рд▓рдЧрднрдЧ рдЕрдкрдиреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдЦреЛ рджреАред


рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдирд┐рд░реНрдзрд╛рд░рдХ рд░рд┐рд▓реАрдЬ - рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛


20 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдХреЛрдбрд┐рдВрдЧ рдЕрдиреБрднрд╡ рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рдХрднреА-рдХрднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ред рд╡реЗ рд╕рд░рд▓, рдЕрдирд┐рд╡рд╛рд░реНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рд▓реЗрдХрд░ рдкреЗрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рддрдХ рдереЗред рднрд╛рд╖рд╛ рдмрдирд╛рддреЗ рд╕рдордп, рдХрдИ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╕рд░рд▓ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ:


рдХрднреА рднреА рдПрдХ рдЕрдкрд╡рд╛рдж рднрд╛рд╖рд╛ рди рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдХреЛрдИ рдирд┐рд░реНрдзрд╛рд░рдХ рд░рд┐рд╣рд╛рдИ рди рд╣реЛред

рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ .NET рд░рдирдЯрд╛рдЗрдо рдХрд┐рди рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рднреА рднрд╛рд╖рд╛рдПрдВ?


рдЗрд╕ рдирд┐рдпрдо рдХреЗ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╕рдорд░реНрдерд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЬрд╛рд░реА рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ ред рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░рд┐рд╣рд╛рдИ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдЬрд┐рд╕ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрди рдореБрдХреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ: рдкрд╛рд░рдВрдкрд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдЬрд╛рд░реА рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЖрдзреБрдирд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рдХрд░рдирд╛ рд╣реИред рдЖрдзреБрдирд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореБрдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЖрд╡реЗрджрди рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рдХрдИ рд╕реВрдХреНрд╖реНрдо рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, .NET рд░рдирдЯрд╛рдЗрдо рдПрдХ рдЖрдзреБрдирд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред


.NET Finalize рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЧреИрд░-рдирд┐рд░реНрдзрд╛рд░рдХ рд░рд┐рд▓реАрдЬ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рд╣реИред рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдХ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Microsoft рдиреЗ IDisposable рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдФрд░ рдЕрдиреНрдп рдХрдХреНрд╖рд╛рдПрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ) рднреА рдЬреЛрдбрд╝рд╛ред рдлрд┐рд░ рднреА, рд░рдирдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП IDisposable рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдЬреИрд╕реЗ рд╣рд░ рдХреЛрдИред "рджреВрд╕рд░реА-рджрд░" рдХреА рдпрд╣ рд╕реНрдерд┐рддрд┐ рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреА рд╣реИред


C # рдореЗрдВ, "рдЧрд░реАрдмреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рдХ рд░рд┐рд▓реАрдЬ" рдХреЛ try рдФрд░ finally try рдпрд╛ using рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреЛ рд▓рдЧрднрдЧ рдПрдХ рд╣реА рдмрд╛рдд рд╣реИ)ред Microsoft рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд▓рд┐рдВрдХ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧрд▓рдд рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдирддреАрдЬрддрди, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдХ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ finally рдирд┐рд░реНрдорд╛рдгреЛрдВ using рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрдирд╛рдбрд╝реА \ _ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдпрд╛ IDisposable.Dispose рдПрдХ рд╕реАрдзрд╛ рдХреЙрд▓ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рдПрдХ C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП, рдЬреЛ shared_ptr<T> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ shared_ptr<T> рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдк рдЖрдХрд░реНрд╖рдХ рдирд╣реАрдВ рд╣реИрдВред (рдЕрдВрддрд┐рдо рд╡рд╛рдХреНрдп рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦрдХ рдХрд╛ рдРрд╕рд╛ рд╕рдВрдмрдВрдз рдХрд╣рд╛рдВ рд╣реИ - рд▓рдЧрднрдЧред


IDisposable


рдЖрдИрдбреАрд╕реЛрдлрд╛рдЗрд▓ рдорд┐рд╕реЛрдлрд╝рд░реЛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдХ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред рдПрдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ:


  • рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЬреЛ рдкреНрд░рдмрдВрдзрд┐рдд ( IDisposable ) рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИ ред рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╕реНрд╡рдпрдВ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддреН, рдЬреАрд╡рди рд╕рдордп, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рджреЗрдЦреЗрдВред
  • рдХреЛрдИ рднреА рдкреНрд░рдХрд╛рд░ рдЬреЛ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИред
  • рдХреЛрдИ рднреА рдкреНрд░рдХрд╛рд░ рдЬреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рджреЛрдиреЛрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИред
  • рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдХ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдЬреЛ IDisposable рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЙрди рд╡рд░реНрдЧреЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рдЬреЛ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рд╣реИрдВред рдмреЗрд╣рддрд░ рд▓рдЧрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

IDisposable рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рдХ рд░реВрдк рд╕реЗ рдореБрдХреНрдд IDisposable рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред


рдореБрд╢реНрдХрд┐рд▓реЗрдВ IDisposable - рдкреНрд░рдпреЛрдЬреНрдпрддрд╛


рдХрд╛рдлреА рдмреЛрдЭрд┐рд▓ рд╡рд╕реНрддреБрдУрдВ IDisposable рдЙрдкрдпреЛрдЧ IDisposable рд▓рд┐рдП IDisposable рдСрдмреНрдЬреЗрдХреНрдЯ IDisposable рд╣реИрдВред рдПрдХ using рдПрдХ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреБрд░реА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕реА # рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ using рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдЬреЛ IDisposable рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ using рдХрд░рдирд╛ рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╛ рдмрд╕ рд╣рд░ рдЬрдЧрд╣ using using рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХрдВрдкрд╛рдЗрд▓рд░ рд╢рдкрде рд▓реЗрддрд╛ рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╣рд░ рдмрд╛рд░ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдкреНрд░рдмрдВрдзрд┐рдд C ++ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред рдпрд╣ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рд╕реЗрдореЗрдВрдЯрд┐рдХреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП using рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛред C # рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдгред рдорд╛рдорд▓реЛрдВ рдХреЛ рдмрджрддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди "рдЦреЗрддреЛрдВ рдореЗрдВ" рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рджреБрд░реНрдШрдЯрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред


рд▓рд┐рдВрдХ рдХреЛ рдЧрд┐рдирдиреЗ рдХреЗ рдмрдЬрд╛рдп, IDisposable рдХреА рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ - рдорд╛рд▓рд┐рдХ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдирд╛ред рдЬрдм C ++ рдореЗрдВ shared_ptr<T> рдХреА рдЕрдВрддрд┐рдо рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рддреБрд░рдВрдд рдореБрдХреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдореБрдХреНрдд рд╣реИрдВред IDisposable рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╡рд╕реНрддреБ рдХрд╛ "рдорд╛рд▓рд┐рдХ" рд╣реИ рдФрд░ рдЗрд╕реЗ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдХрднреА-рдХрднреА рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╕реНрдкрд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИ: рдЬрдм рдПрдХ рд╡рд╕реНрддреБ рджреВрд╕рд░реЗ рдХреЛ IDisposable рдФрд░ рдЦреБрдж рд╣реА IDisposable рд▓рд╛рдЧреВ рдХрд░ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╛рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЛрдб рдХреЗ рдПрдХ рдмреНрд▓реЙрдХ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдмрд╕ рдЗрд╕ рдмреНрд▓реЙрдХ рдХрд╛ using рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдРрд╕реЗ рдХрдИ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрджрд░реНрдн рдЧрдгрдирд╛ рдмрд╕ рдареАрдХ рд╣реЛрдЧреА)ред


рдореБрд╢реНрдХрд┐рд▓реЗрдВ IDisposable - рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛


рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП IDisposable рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рд╕реВрдЪреА рд╕реЗ IDisposable рдХреЛ рд╣рдЯрд╛рдирд╛ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдпрджрд┐ рдЖрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдпрд╛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд╛рд╕ рдХреА рдЧрдИ рдЕрдкрдиреА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ IDisposable рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб, рдЬреЛ рдХрд┐ IDisposable рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛, рдореБрдлреНрдд рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рджреЗрдЧрд╛ред


Microsoft рд╕реНрд╡рдпрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред IEnumerator IDisposable рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд IEnumerator рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ IEnumerator<T> рд╡рд┐рд░рд╛рд╕рдд IEnumerator<T> рдорд┐рд▓рд╛ рд╣реИред рдпрджрд┐ рдЖрдк IEnumerator<T> рдХреЛрдб IEnumerator<T> рдЬреЛ IEnumerator рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ Dispose рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред


рдпрд╣ рджреБрдирд┐рдпрд╛ рдХрд╛ рдЕрдВрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рджреНрд╡рд┐рддреАрдпрдХ рд╕рд╛рд░ рдкрд╣рдЪрд╛рди рджреЗрддрд╛ рд╣реИред


рдореБрд╢реНрдХрд┐рд▓реЗрдВ IDisposable - рдПрдХ рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛


рдкрджрд╛рдиреБрдХреНрд░рдо рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ IDisposable рдХрд╛рд░рдг рд╕рдмрд╕реЗ рдмрдбрд╝реА рдХрдореА рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ IDisposable рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрд╕рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреЛ рд╣реЛрдЧреАред


рдпрджрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ IDisposable рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ IDisposable рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдПрдВ рднреА IDisposable рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИрдВ, рддреЛ рдЕрдВрддрд┐рдо рдХреЛрдб рдпрд╛ рддреЛ рдирд┐рдпрддрд╛рддреНрдордХ рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдЧрд╛, рдпрд╛ рдпрд╣ рдЬрд╛рдБрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╡рд╕реНрддреБ IDisposable рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдПрдХ рдмрджрд╕реВрд░рдд try рдФрд░ finally рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, IDisposable рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред рдореБрдЦреНрдп рдХрд╛рд░рдг рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реИ - рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкреГрдердХреНрдХрд░рдгред рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд░рд┐рд╣рд╛рдИ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред Microsoft рдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдХ рд░рд┐рд▓реАрдЬ рдХреЛ рдПрдХ рджреНрд╡рд┐рддреАрдп рд╢реНрд░реЗрдгреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред


рдирд╣реАрдВ-рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ IDisposable рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, IDisposable.Dispose ред IDisposable.Dispose рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИред


IDisposable рд╕рд╛рде рдПрдХ рдФрд░ рдХрдард┐рдирд╛рдИ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдЙрдирдореЗрдВ рдХреБрдЫ рд╕рдВрдЧреНрд░рд╣ "рд╕реНрд╡рдпрдВ" рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рдВрдЧреНрд░рд╣ рд╕реНрд╡рдпрдВ IDisposable рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдкрд░ IDisposable.Dispose рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рд╕рдВрдЧреНрд░рд╣ рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЕрдкрдиреЗ рд╡рдВрд╢рдЬ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП IDisposable рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред


рдореБрд╢реНрдХрд┐рд▓реЗрдВ IDisposable - рдЕрддрд┐рд░рд┐рдХреНрдд "рдЧрд▓рдд" рд╕реНрдерд┐рддрд┐


рд╡рд╕реНрддреБ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдХрд┐рд╕реА рднреА рд╕рдордп рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ IDisposable рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ "рд░рд┐рд▓реАрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛" рд░рд╛рдЬреНрдп рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА ObjectDisposedException рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИред рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдФрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХрдирд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЦрд░реНрдЪ рд╣реИред


рдкреНрд░рддреНрдпреЗрдХ рдЫреАрдВрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, "рдореБрдХреНрдд" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╕реНрддреБ рдХреЛ "рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░" рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдХреНрдд рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред


рдореБрд╢реНрдХрд┐рд▓реЗрдВ IDisposable - рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ


IDisposable рд╕рд┐рд░реНрдл рдПрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИред рдПрдХ рд╡рд░реНрдЧ рдЬреЛ IDisposable рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдирд┐рдпрддрд╛рддреНрдордХ рд░рд┐рд▓реАрдЬ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб рдХреЗ рд▓рд┐рдП, Dispose рдХреЛ рдХреЙрд▓ рди рдХрд░рдирд╛ рдареАрдХ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рдЬреЛ IDisposable рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдХреЛ рдирд┐рдпрддрд╛рддреНрдордХ рдФрд░ рдЧреИрд░-рдирд┐рдпрддрд╛рддреНрдордХ рд░рд┐рд▓реАрдЬ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕рд┐рдЯреАрдЬрд╝ рдЖрдИрдбреАрдЗрдЬрд╝реЛрдлрд╝реЙрд░реНрдо - рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


Microsoft IDisposable рдХреЛ рд▓рд╛рдЧреВ IDisposable рд▓рд┐рдП рдПрдХ рдкреИрдЯрд░реНрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ред (рдкрд╣рд▓реЗ рдПрдХ рдЖрдо рддреМрд░ рдкрд░ рднрдпрд╛рдирдХ рдкреИрдЯрд░реНрди рдерд╛, рд▓реЗрдХрд┐рди рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╣рд╛рд▓ рд╣реА рдореЗрдВ, .NET 4 рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рдж, рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЗ рд╕рд╛рде рдкреНрд░рд▓реЗрдЦрди рдХреЛ рд╕рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред .NET рдкреБрд╕реНрддрдХреЛрдВ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдЖрдк рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред - рд▓рдЧрднрдЧред )


  • IDisposable.Dispose рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд░реНрдЧ рдореЗрдВ рдореБрдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрддрд┐рдо рд░реВрдк рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • IDisposable.Dispose рдХреЛ рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рджреБрд╖реНрдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рдзрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЙрд▓ рдХреА рдЧрдИ рд╣реИ рдпрд╛ рдирд╣реАрдВред
  • рдлрд╛рдЗрдирд▓рд░реНрд╕ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ IDisposable.Dispose рд╕реЗ рдкрд╣рд▓реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ IDisposable.Dispose ред рдРрд╕реЗ "рджреМрдбрд╝" рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП GC.SuppressFinalize рдЙрдкрдпреЛрдЧ GC.SuppressFinalize рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛:


  • рдлрд╛рдЗрдирд▓рд░реНрд╕ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд░рд┐рд▓реАрдЬрд╝ рдХреЛрдб рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • CriticalFinalizerObject рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ IDisposable рдХреЛ рд▓рд╛рдЧреВ IDisposable рд▓рд┐рдП рдЧреИрд░-рддреБрдЪреНрдЫ рдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред void Dispose(bool disposing) рдПрдХ рд╡рд╛рдпрд░рд▓ рд╡рд┐рдзрд┐ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡рд┐рд╡рд╢ рдирд┐рд╖реНрдкрд╛рджрди рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП RuntimeHelpers.PrepareMethod рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдореБрд╢реНрдХрд┐рд▓реЛрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ


рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ - рдЕрдХреНрд╕рд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдпрд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд░реНрдЧ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ ManualResetEvent рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдпрд╣ IDisposable.Dispose рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрджрд┐ рдХреЛрдб рдлрд╛рдЗрдирд▓ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЕрдВрддрд┐рдо рд░реВрдк рдореЗрдВ рд╕реАрдорд╛рдУрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдиреАрдЪреЗ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдЖрд░реЗрдЦ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреАрдврд╝рд┐рдпреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдИ рд╡рд┐рд╡рд░рдг, рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ, рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреБрдирд░реБрджреНрдзрд╛рд░, рдкреГрд╖реНрдарднреВрдорд┐ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣, рдЖрджрд┐ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


.NET рдЧрд╛рд░рдмреЗрдЬ рдХрд▓реЗрдХреНрдЯрд░ рдорд╛рд░реНрдХ-рдПрдВрдб-рд╕реНрд╡реАрдк рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рддрд░реНрдХ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


  1. рд╕рднреА рд╕реВрддреНрд░ рд░реЛрдХреЗрдВред
  2. рд╕рднреА рд░реВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд▓реЗрдВ: рд╕реНрдЯреИрдХ, рд╡реИрд░рд┐рдПрдмрд▓ рдлрд╝реАрд▓реНрдбреНрд╕, GCHandle рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, GCHandle рдХрддрд╛рд░ рдкрд░ рдЪрд░ред рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдбреЛрдореЗрди (рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдорд╛рдкреНрддрд┐) рдЙрддрд╛рд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреИрдХ рдФрд░ рд╕реНрдерд┐рд░ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЪрд░ рдЬрдбрд╝ рдирд╣реАрдВ рд╣реИрдВред
  3. рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рд╕рднреА рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ "рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВред
  4. рдЕрдиреНрдп рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирд╛, рдЬрд┐рдирдореЗрдВ рд╡рд┐рдзреНрд╡рдВрд╕рдХ (рдлрд╛рдЗрдирд▓) рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдХрддрд╛рд░ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ ( GC.SuppressFinalize GC рдХреЛ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ)ред рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдХреНрд░рдо рдореЗрдВ рдкрдВрдХреНрддрд┐рдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ, рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреА рдПрдХ рдзрд╛рд░рд╛ (рдпрд╛ рдХрдИ) рдХрд╛рдо рдХрд░рддреА рд╣реИ:


  1. рдХрддрд╛рд░ рд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдЕрдВрддрд┐рдо рд░реВрдк рдХреЛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХрдИ рдлрд╛рдЗрдирд▓ рдХреЛ рдЪрд▓рд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред
  2. рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХрддрд╛рд░ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдХреЛрдИ рдФрд░ рдЗрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдЧрд▓реЗ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рд╛рдл рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдЕрд╕рдВрднрд╡ рдХреНрдпреЛрдВ рд╣реИ - рдЖрдкрдХреЛ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ IDisposable.Dispose рдХреЙрд▓ рдХрд░рдирд╛ред IDisposable.Dispose рдХрд┐рд╕реА рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд╕рд╛рдзрди рд░рд┐рд▓реАрдЬрд╝ рдХреЛрдб рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред


рдХреБрдЫ рдЕрдкрд╡рд╛рдж рд╣реИрдВ рдЬрдм рдЖрдк рдПрдХ рдлрд╛рдЗрдирд▓ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ:


  1. CriticalFinalizerObject рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЕрдВрддрд┐рдо рд░реВрдк рдЗрд╕ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЬрдм рддрдХ CriticalFinalizerObject ManualResetEvent рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рди рд╣реЛ рдЬрд╛рдП, рддрдм рддрдХ рдЖрдк ManualResetEvent рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдХреБрдЫ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╡рд┐рд╢реЗрд╖ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрдВрд╕реЛрд▓ рдФрд░ рдХреБрдЫ рдереНрд░реЗрдб рд╡рд┐рдзрд┐рдпрд╛рдБред рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рднреА рдЙрдиреНрд╣реЗрдВ рдлрд╛рдЗрдирд▓ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдВрддрд┐рдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдлрд┐рд░ рднреА, рдЧреИрд░-рддреБрдЪреНрдЫ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдгрддрд╛ рдХрд╛ рддрд░реНрдХ рдЖрд╡рд╢реНрдпрдХ рд╣реИред Windows.Forms рдЗрд╕рдореЗрдВ Application.Exit рд╡рд┐рдзрд┐ рдореЗрдВ рдкреВрд░реНрдг рддрд░реНрдХ Windows.Forms ред рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдХрдВрдкреЛрдиреЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реЛрддреА рд╣реИ рдХрд┐ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЬрд┐рдХ рдХреЗ рд╕рд╛рде IDisposable ред IDisposable.Dispose рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдкреНрддрд┐ред


Microsoft рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред StreamWriter рд╡рд░реНрдЧ рдПрдХ Stream рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИ (рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ - рд▓рдЧрднрдЧред рдкреНрд░рддрд┐ред )ред StreamWriter.Close рдмрдлрд░ рдХреЛ рдлреНрд▓рд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ Stream.Close рдХреЙрд▓ Stream.Close (рдпрд╣ рднреА рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ using рдореЗрдВ рд▓рд┐рдкрдЯрд╛ рд╣реЛ - рд▓рдЧрднрдЧред )ред рдпрджрд┐ StreamWriter рдмрдВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдмрдлрд░ рдлреНрд▓рд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдЪреИрдЯ рдЦреЛ рдЬрд╛рддрд╛ рд╣реИред Microsoft рдиреЗ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛ рдХрд╛ "рд╕рдорд╛рдзрд╛рди" рдХрд┐рдпрд╛ред рддрд░реНрдХ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдЙрджрд╛рд╣рд░рдгред


рдореИрдВ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ .NET рдЗрдВрдЯрд░реНрдирд▓реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдЬреЗрдлрд░реА рд░рд┐рдХреНрдЯрд░ рдХреЗ CLR C # рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЦрд░реАрдж рд▓реЗрдВ ред рдЧрдВрднреАрд░рддрд╛ рд╕реЗред рдпрд╣ рдХрд┐рд╕реА рднреА C # рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЬреНрдЮрд╛рди рд╣реИред


рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдирд┐рд╖реНрдХрд░реНрд╖


рдЕрдзрд┐рдХрд╛рдВрд╢ .NET рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрднреА рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред .NET рдПрдмреНрд╕рдЯреНрд░реИрдХреНрд╢рди рдХреЗ рд╕реНрддрд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдЧрд╛ рдФрд░ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА "рдмрд╛рдЬреАрдЧрд░реА" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдХрдо рдХрд░реЗрдЧрд╛ред рдлрд┐рд░ рднреА, рдпрд╣ рд▓реЗрдЦ рдЗрд╕ рдорд╛рдпрдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХрд┐ рдпрд╣ рд╕рд░рд▓ рдЪреАрдЬреЛрдВ рдХреЗ рдЧрд╣рди рд╡рд┐рд╡рд░рдг рдФрд░ рдХреЛрдб рдбрд┐рдЬрд╛рдЗрди рдкрд░ рдЙрдирдХреЗ рдкреНрд░рднрд╛рд╡ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред


рдЕрдЧрд▓рд╛ рднрд╛рдЧ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде .NET рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреАред

Source: https://habr.com/ru/post/hi414873/


All Articles