рдбрд┐рд╕реНрдкреЛрдЬреЗрдмрд▓ рдкреИрдЯрд░реНрди (рдбрд┐рд╕реНрдкреЛрдЬреЗрдмрд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕рд┐рджреНрдзрд╛рдВрдд) pt 1


рдбрд┐рд╕реНрдкреЛрдЬреЗрдмрд▓ рдкреИрдЯрд░реНрди (рдбрд┐рд╕реНрдкреЛрдЬреЗрдмрд▓ рдбрд┐рдЬрд╛рдЗрди рд╕рд┐рджреНрдзрд╛рдВрдд)


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


рдЕрдЧрд░ рдореИрдВ рдкреВрдЫрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдИрдбреАрдбреАрд╕реЛрдкрд╛рдпрд┐рдХ рдХреНрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рд╣реИ


public interface IDisposable { void Dispose(); } 

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреНрдпрд╛ рд╣реИ? рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдЕрдЧрд░ рд╣рдо рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдмрдЬрд╛рдп рд╕реНрдореГрддрд┐ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдореЗрдореЛрд░реА рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдЫреЛрдЯреЗ рд╡рд┐рд╡рд░рдг рд╣реИрдВред


рдпрд╣ рдЕрдзреНрдпрд╛рдп рд░реВрд╕реА рд╕реЗ рд╕рдВрдпреБрдХреНрдд рд░реВрдк рд╕реЗ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдФрд░ рдкреЗрд╢реЗрд╡рд░ рдЕрдиреБрд╡рд╛рджрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдЖрдк рд░реВрд╕реА рдпрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЦреНрдпрддрдГ рдЪреАрдиреА рдпрд╛ рдЬрд░реНрдорди рдореЗрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рд╣рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдЧрд┐рддреБрдм рдкрд░ рдПрдХ рд╕реНрдЯрд╛рд░ рджреЗрдирд╛ рд╣реИ рдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдлреЛрд░реНрдХ рдХрд░рдирд╛ рд╣реИ github / sidristij / dotnetbook ред

рдПрдХ рдЧрд╝рд▓рддрдлрд╝рд╣рдореА рд╣реИ рдХрд┐ IDisposable рдорд╛рдирд╡ рд░рд╣рд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрд╛рд░реА IDisposable рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдорд╛рдирд╡ рд░рд╣рд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрдпрд╛ File рд╡рд░реНрдЧ рдПрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рд╣реИ? рдирд╣реАрдВред рд╢рд╛рдпрдж DbContext рдПрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рд╣реИ? рдирд╣реАрдВ, рдлрд┐рд░ рд╕реЗред рдПрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ .NET рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рдРрд╕рд╛ рдордВрдЪ рдирд╣реАрдВ рдмрдирд╛, рдЬреЛ рдХреБрдЫ рдЗрд╕рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рдПрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдЦреЛрд▓рд╛ рдлрд╝рд╛рдЗрд▓ рд╣реИрдВрдбрд▓ рд╣реИред рдПрдХ рд╣реИрдВрдбрд▓ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдЦреЛрд▓реА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╣рдЪрд╛рдирддреА рд╣реИ - рдирд╣реАрдВ, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ - рдПрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ред рдЕрд░реНрдерд╛рддреН, рд╕рднреА рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрд░рдЪрдирд╛рдПрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐, рд╡рд┐рдЦрдВрдбрди рдФрд░ рдЕрдиреНрдп рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдЯреБрдХрдбрд╝реЗ, рдПрдХ рд╕рд┐рд▓реЗрдВрдбрд░ рдХреА рд╕рдВрдЦреНрдпрд╛, рдПрдХ рд╕рд┐рд░ рдпрд╛ рдПрдХ HDD рдХрд╛ рдХреНрд╖реЗрддреНрд░) рдПрдХ рдУрдПрд╕ рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирд╣реАрдВ .NET рдордВрдЪред .NET рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХрдорд╛рддреНрд░ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди IntPtr рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдпрд╣ рд╕рдВрдЦреНрдпрд╛ FileSafeHandle рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдкрдЯреА рд╣реБрдИ рд╣реИ, рдЬреЛ рдХрд┐ рдлрд╛рдЗрд▓ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдкрдЯреЗ рдЕрдкрдиреА рдмрд╛рд░реА рдореЗрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╡рд░реНрдЧ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП IntPtr рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдПрдХ рдЦреБрд▓реА рд╣реБрдИ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдВрднрд╛рд▓ред рдЖрдк рдЙрд╕ рдлрд╛рдЗрд▓ рдХреЛ рдХреИрд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ? WinAPI рдпрд╛ Linux OS рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред


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


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

рдареАрдХ рд╣реИред рдЕрдм рд╣рдордиреЗ рдорд╛рдирд╡ рд░рд╣рд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд┐рдпрд╛ред рд╣рдореЗрдВ рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдИрдбреАрд╕рд┐рд╕реЛрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдХреЛрдИ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рд╣рд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк OS API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ .NET рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рдЦреБрдж рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЗрдореЛрд░реА рд░реЗрдВрдЬ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП VirtualAlloc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), .NET рдХреЛ рднреА рдХреБрдЫ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ VirtualAlloc рдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╛, рдпрд╣ рдУрдПрд╕ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ рдЦреЛрд▓реА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпреЗ рдЕрд▓рдЧ рдФрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреИрджрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЖрдЙрдЯрдСрдлрдореИрдореЛрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдХреЗрддрдХ рдХреЛ рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред рдпрд╛, рдпрджрд┐ рдЖрдк рдУрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдЭрд╛ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрд┐рдирд╛ рдмрдВрдж рдХрд┐рдП рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдЭрд╛ рдкрд░ рд▓реЙрдХ рдХрд░ рджреЗрдВрдЧреЗред рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдЭрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ рддреЛ рднреА IIS рдХреА рддрд░рдл рд▓реЙрдХ рд░рд╣реЗрдЧрд╛ред рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓реЙрдХ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХреЛрдВ рд╕реЗ iisreset рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ред
рдПрдХ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдкрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдп рдмрди рд╕рдХрддрд╛ рд╣реИред


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


рддреЛ, рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рджреЛ рдорд╛рдирдХ рддрд░реАрдХреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рдЖрдк рдЗрд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рднреАрддрд░ рдпрд╛ рдЗрдХрд╛рдИ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рднреАрддрд░ рдЬрд▓реНрджреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдХрд╛рдИ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВред


рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рдХрд┐рд╕реА рдЙрджрд╛рд╣рд░рдг рдХреЛ using(...){ ... } рд▓рдкреЗрдЯрдирд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдЙрдкрдпреЛрдЧ-рд╕рдВрдмрдВрдзреА рдмреНрд▓реЙрдХ рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рдбрд┐рд╕реНрдкреЛрдЬ рдХреЛ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП ()ред рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд╖реНрдЯ рдХрд░рдирд╛ рд╣реИ, рдЬрдм рдЗрд╕рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ рдЦрддреНрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬрд┐рд╕реЗ рд╣рдо рдЬрд╛рд░реА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди .NET рдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд╕реНрд╡рдд: рдирд╖реНрдЯ рд╣реЛрдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ, рд╣реИ рдирд╛? рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЗрд╕реЗ рдХрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдмреАрдЪ, рд╣рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдкрд░ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд╣рдо рдПрдХ рдЦреБрд▓реА рдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдЦрддреНрдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╡рд╛рд▓реЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреАрд╕рд┐рд╕реЛрдкрдпреЛрдЧреА рдФрд░ рдХреЙрд▓ рдбрд┐рд╕реНрдкреЛрдЬрд╝ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ , рдФрд░ рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рднреА рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЖрдИрдбреАрд╕реЛрдкрд╛рдпрд░реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗ


рдЖрдЗрдП рд╕рд░рд▓ рд╕реЗ рдЬрдЯрд┐рд▓ рддрдХ рдЖрдЗрдбрд┐рд╕реЛрдкреНрд░рдпреЛрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦреЗрдВред IDis рдкреНрд░рдпреЛрдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдкрд╣рд▓рд╛ рдФрд░ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╣реИ:


 public class ResourceHolder : IDisposable { DisposableResource _anotherResource = new DisposableResource(); public void Dispose() { _anotherResource.Dispose(); } } 

рдпрд╣рд╛рдБ, рд╣рдо рдПрдХ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдЧреЗ рдбрд┐рд╕реНрдкреЛрдЬрд╝ () рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрд╕рдВрдЧрдд рдмрдирд╛рддреА рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЕрднреА рднреА рдЗрд╕рдХреЗ Dispose() рдмрд╛рдж рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ Dispose() :


 public class ResourceHolder : IDisposable { private DisposableResource _anotherResource = new DisposableResource(); private bool _disposed; public void Dispose() { if(_disposed) return; _anotherResource.Dispose(); _disposed = true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private void CheckDisposed() { if(_disposed) { throw new ObjectDisposedException(); } } } 

CheckDisposed () рдХреЛ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдореЗрдВ рдкрд╣рд▓реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рд╛рдкреНрдд ResourceHolder рд╢реНрд░реЗрдгреА рд╕рдВрд░рдЪрдирд╛ рдПрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рд▓рдЧрддреА рд╣реИ, рдЬреЛ рдХрд┐ DisposableResource ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдПрдХ рд▓рд┐рдкрдЯреЗ рд╣реБрдП рдорд╛рдирд╡ рд░рд╣рд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рдПрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред


 public class FileWrapper : IDisposable { IntPtr _handle; public FileWrapper(string name) { _handle = CreateFile(name, 0, 0, 0, 0, 0, IntPtr.Zero); } public void Dispose() { CloseHandle(_handle); } [DllImport("kernel32.dll", EntryPoint = "CreateFile", SetLastError = true)] private static extern IntPtr CreateFile(String lpFileName, UInt32 dwDesiredAccess, UInt32 dwShareMode, IntPtr lpSecurityAttributes, UInt32 dwCreationDisposition, UInt32 dwFlagsAndAttributes, IntPtr hTemplateFile); [DllImport("kernel32.dll", SetLastError=true)] private static extern bool CloseHandle(IntPtr hObject); } 

рдкрд┐рдЫрд▓реЗ рджреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ? рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛ рджреЛ рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдкрд░рд╕реНрдкрд░ рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдВрд╕рд╛рдзрди рд╡реИрд╕реЗ рднреА рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ DisposableResource рдкреНрд░рдмрдВрдзрд┐рдд рд╣реЛрддрд╛ рд╣реИ, .NET CLR рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЗрд╕рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд▓рдд рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдореЗрдореЛрд░реА рд░рд┐рд▓реАрдЬрд╝ рдХрд░реЗрдЧрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рд╕рдЪреЗрдд рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ DisposableResource рд╕реЛрд░реНрд╕ рдХреНрдпрд╛ рдЯрд╛рдЗрдк рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХрд╛ рддрд░реНрдХ рдФрд░ рдврд╛рдВрдЪрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рджреЛрдиреЛрдВ рд╕рдВрд╕рд╛рдзрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╣рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП ред рдХреЛрдИ рднреА рд╣рдореЗрдВ рд╣рд░ рдмрд╛рд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реИ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╡реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдпрд╛ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдФрд░ рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдкреНрд░рдХрд╛рд░ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рд╕реЗ рдЕрдирднрд┐рдЬреНрдЮ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред рд╣рдо FileWrapper рд╡рд░реНрдЧ рдореЗрдВ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рддреЛ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдпрджрд┐ рд╣рдо рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВред рдкрд╣рд▓рд╛ рд╣реИ рдЬрдм рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реИ рдФрд░ рдбрд┐рд╕реНрдкреЛрдЬрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рд╡рд╣ рд╣реИ рдЬрдм рдХреБрдЫ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдбрд┐рд╕реНрдкреЛрдЬ рдлреЗрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред


рдЖрдЗрдП рд╕реАрдзреЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЧрд▓рдд рдХреНрдпреЛрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:


  • рдпрджрд┐ рд╣рдо using(obj) { ... } рдЙрдкрдпреЛрдЧ using(obj) { ... } , рддреЛ рдХреЛрдб рдХреЗ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдмреНрд▓реЙрдХ рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдкрд╡рд╛рдж finally рдмреНрд▓реЙрдХ рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рд╕реА # рдХрд╛ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪреАрдиреА рд╣реИ)ред рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЛ рдбрд┐рд╕реНрдкреЛрдЬрд╝рд▓реА рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдкреЛрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрдм рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рди рддреЛ catch рдФрд░ рди рд╣реА finally StackOverflowException рдХреЛ StackOverflowException ред рдЖрдкрдХреЛ рдпрд╣ рд╣рдореЗрд╢рд╛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдХреБрдЫ рдереНрд░реЗрдб рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ StackOverflowException рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рд╣реЛрддреА рд╣реИ, рддреЛ .NET рдЙрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рд╣реИрдВред рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдорд╛рдирд╡ рд░рд╣рд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╡реЗ рддрдм рддрдХ рдореЗрдореЛрд░реА рдореЗрдВ рд░рд╣реЗрдВрдЧреЗ рдЬрдм рддрдХ рдУрдПрд╕ рдЙрдиреНрд╣реЗрдВ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░рддрд╛, рдпрд╛рдиреА рдЬрдм рдЖрдк рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ, рдпрд╛ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдорд╛рдкрди рдХреЗ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рднреАред
  • рдЕрдЧрд░ рд╣рдо Dispose () рдХреЛ рджреВрд╕рд░реЗ Dispose () рд╕реЗ рдХрд╣рддреЗ рд╣реИрдВред рдлрд┐рд░, рд╣рдо рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЕрдиреБрдкрд╕реНрдерд┐рдд рджрд┐рдорд╛рдЧ рд╡рд╛рд▓реЗ рдРрдк рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдбрд┐рд╕реНрдкреЛрдЬрд╝ () рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ред рдпрд╣ рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпреЗ рдХреЗрд╡рд▓ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдереНрд░реЗрдб рдХреЛ рдХреНрд░реИрд╢ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рдЙрди рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдмрд╛рд╣рд░реА рдбрд┐рд╕реНрдкреЛрдЬрд╝ () рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХреЗрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░реЗ рдбрд┐рд╕реНрдкреЛрдЬрд╝ () рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред

рдпреЗ рд╕рднреА рдорд╛рдорд▓реЗ рдирд┐рд▓рдВрдмрд┐рдд рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд▓реЗ рдЪреЗрдХ рдкрд░ рдпрд╣ рд╕рдм рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ FileWrapper рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреНрд░рд╛рдл рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрджрд░реНрдн рдЦреЛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрдореЛрд░реА рдХреЛ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ?


рд╣рдореЗрдВ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЕрдВрддрд┐рдо рд░реВрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред The рдлрд╛рдЗрдирд▓ тАЩрдХрд╛ рдирд╛рдо рдЗрд╕ рддрд░рд╣ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ C # рдореЗрдВ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рддрд░реАрдХреЛрдВ рдФрд░ C ++ рдореЗрдВ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЗ рдХрд╛рд░рдг рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рд╡реИрд╕реЗ рднреА рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдПрдХ рд╡рд┐рдзреНрд╡рдВрд╕рдХ (рд╕рд╛рде рд╣реА Dispose() рд╡рд┐рдкрд░реАрддред рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрдм рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЪреАрдЬреЗрдВ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИрдВ)ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЧрд╛рд░рдВрдЯреАрдХреГрдд рд░рд┐рд╣рд╛рдИ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ ред рд╣рдореЗрдВ рдорд╛рдирд╡рд░рд╣рд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП ред рдлрд┐рд░ рд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ GC рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░ рдПрдХ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрдм рд╣реЛрддрд╛ рд╣реИред


рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ:


 public class FileWrapper : IDisposable { IntPtr _handle; public FileWrapper(string name) { _handle = CreateFile(name, 0, 0, 0, 0, 0, IntPtr.Zero); } public void Dispose() { InternalDispose(); GC.SuppressFinalize(this); } private void InternalDispose() { CloseHandle(_handle); } ~FileWrapper() { InternalDispose(); } /// other methods } 

рд╣рдордиреЗ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрди рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЖрд╡реЗрджрди рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЕрдЧрд░ рдбрд┐рд╕реНрдкреЛрдЬ () рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдореЗрдВ GC рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдбрд┐рд╕реНрдкреЛрдЬрд╝ () рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рджрдмрд╛рдПрдВред рдПрдХ рд╣реА рд╕рдВрд╕рд╛рдзрди рдХреЛ рджреЛ рдмрд╛рд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛? рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдХреЛрдб рдХреЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд╖реЗрддреНрд░ рдХреЛ рднреА рдЬрд╛рдиреЗ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЕрдВрддрд┐рдордХрд░рдг рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдЕрдВрддрд┐рдордХрд░рдг рдХрддрд╛рд░ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВред рдЕрдм, рдЙрджрд╛рд╣рд░рдг рдХреЛ рдФрд░ рднреА рдмрдврд╝рд╛рддреЗ рд╣реИрдВред


 public class FileWrapper : IDisposable { IntPtr _handle; bool _disposed; public FileWrapper(string name) { _handle = CreateFile(name, 0, 0, 0, 0, 0, IntPtr.Zero); } public void Dispose() { if(_disposed) return; _disposed = true; InternalDispose(); GC.SuppressFinalize(this); } [MethodImpl(MethodImplOptions.AggressiveInlining)] private void CheckDisposed() { if(_disposed) { throw new ObjectDisposedException(); } } private void InternalDispose() { CloseHandle(_handle); } ~FileWrapper() { InternalDispose(); } /// other methods } 

рдЕрдм рдПрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЗрдирдХреИрдк рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдкреВрд░реНрдг рджрд┐рдЦрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рджреВрд╕рд░рд╛ Dispose() рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдордВрдЪ рдХрд╛ рдПрдХ рдорд╛рдирдХ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд▓реЛрдЧ рдЕрдХреНрд╕рд░ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП Dispose() рдХреА рджреВрд╕рд░реА рдХреЙрд▓ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЧрд▓рдд рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ MS рдкреНрд░рд▓реЗрдЦрди рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рд╡рд╣ рдРрд╕рд╛ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбрд┐рд╕реНрдкреЛрдЬрд╝ () рдХреЗ рдХрдИ рдХреЙрд▓ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЕрдиреНрдп рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреА рдЕрдЦрдВрдбрддрд╛ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧреАред рдпрджрд┐ рд╣рдордиреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрджреНрдзрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ CheckDisposed рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


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


рджреВрд╕рд░рд╛ рдХрд╛рд░рдг рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдиреЗ рдПрдХ рдРрд╕рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рд╣рд┐рдореНрдордд рдХреА рд╣реИ рдЬреЛ рд╕реНрдореГрддрд┐ рдХрд╛ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред рдпрд╣ рдХреИрд╢рд┐рдВрдЧ рдФрд░ рдЕрдиреНрдп рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛, рднрд╛рд░реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рджрд┐рди рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди OutOfMemoryException рдХреЗ рд╕рд╛рде рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЬрдм рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреЛрдб рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рднреА рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджреЛрд╣рд░рд╛рдпрд╛ рдЕрдкрд╡рд╛рдж рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛, рднрд▓реЗ рд╣реА рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛ рдкрдХрдбрд╝рд╛ рдЬрд╛рдПред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирдП рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдмрдирд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдирд╛ред рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЬрдм рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рддрд░реАрдХреЗ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ? рдХрд╛рдлреА рдЖрд╕рд╛рдиреА рд╕реЗред рдпрджрд┐ рдЖрдкрдХреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд░рд┐рдЯрд┐рдХрд▓ рдлрд╝рд╛рдЗрдирд▓реАрдЬрд╝рд░рдСрдмрдЬреЗрдХреНрдЯ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИ, рддреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рд╕реАрдзреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк [PrePrepareMethod] рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рддрд░реАрдХреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд рднреА рд╣реЛрдВрдЧреЗ рдФрд░ рдХрдо рд╕рдВрд╕рд╛рдзрди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдВрдЧреЗред


рд╡рд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ? рдЬреЛ рд▓реЛрдЧ рдЧреБрдЬрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдЙрди рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпреЛрдВрдХрд┐ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдирд┐рд▓рдВрдмрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреАред рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдЭрд╛ рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддрд╛ рд╣реИ, рддреЛ рдкреВрд░реНрд╡ рдХреЛ рджреВрд░рд╕реНрде рд╣реЛрд╕реНрдЯ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдкрд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдЬрдм рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдВрдж рдХрд░рдХреЗ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдЬрд╛рд░реА рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдкрд░ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд░рд┐рдмреВрдЯ рдХреЗ рдмрд╛рдж рднреА рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬрдм рддрдХ рд░рд┐рдореЛрдЯ рд╣реЛрд╕реНрдЯ рдЗрд╕реЗ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░рддрд╛ рддрдм рддрдХ рдЖрдкрдХреЛ рд▓рдВрдмрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдлрд╛рдЗрдирд▓ рдореЗрдВ рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ CLR рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рддреНрд╡рд░рд┐рдд рдХреНрд░реИрд╢ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЗрдВ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХреЛ рдирд╣реАрдВ рдкрдХрдбрд╝ рд╕рдХрддреЗ ... рдХреИрдЪ ред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕реЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдВрддрд┐рдо рд▓реЗрдХрд┐рди рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрдереНрдп рдирд╣реАрдВ: рдпрджрд┐ CLR рдЕрд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдбреЛрдореЗрди рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рддреЛ CriticalFinalizerObject рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЕрдВрддрд┐рдо рд░реВрдк рдХреЛ рднреА рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╕реАрдзреЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред


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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк "рдзрдиреНрдпрд╡рд╛рдж" рдХрд╣рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЬреЛ рдЖрдк рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣ рд╣рдореЗрдВ рдЬреАрдердм рдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд░ рдПрдХ рд╕реНрдЯрд╛рд░ рджреЗ рд░рд╣рд╛ рд╣реИред https://github.com/sidristij/dotnetbook

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


All Articles