рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд▓рдЧрднрдЧ 10% рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ 90% рд▓рдЧрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдХрдерди рдЕрддрд┐рд░рдВрдЬрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдбреЗрд╡рд▓рдкрд░ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реЛрдЧрд╛ рдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдПрдХ рдЕрддреНрдпрдВрдд рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдмрдбрд╝реЗ рдорд▓реНрдЯреА-рдереНрд░реЗрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рддрдХрд░рдг рд╕рд╣реЗрдЬреЗ рдЧрдП рдорд╛рдирд╡-рдШрдВрдЯреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЧрддрд┐ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдВрддрддрдГ, рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╡рдлрд╛рджрд╛рд░реА рдмрдврд╝рд╛рддрд╛ рд╣реИред
DotNext 2018 Piter рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ рдореЗрдВ
рд╕рд░реНрдЧреЗрдИ рд╢реЗрдЪрдЧреНрд░реАрдХреЛрд╡рд┐рдЪ (рдбреЙрдЯрдореЗрд▓рд░) рдиреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЬрд┐рд╕реЗ рд╡рд░реНрдгрд┐рдд рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдмрдЧ рдвреВрдВрдврдиреЗ рдХреА рд╕реНрдкрд╖реНрдЯ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ - рд╕рд░реНрдЧреЗрдИ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдХрдЯ рд╡реАрдбрд┐рдпреЛ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рдХреЗ рддрд╣рддред
(рдФрд░ рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╣рдордиреЗ рд╕рднреА рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рд╕реЗ
рдЬреЙрди рд╕реНрдХреАрдЯ рдХреА рдЕрдкреАрд▓ рдХреЛ рдЬреЛрдбрд╝рд╛, рдЕрд╡рд╢реНрдп рджреЗрдЦреЗрдВ)
рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рд╣реИ: рдХреИрд╕реЗ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХреАрдбрд╝реЗ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдлреЛрдХрд╕ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рдирд┐рдпрдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рд╢рд╛рдпрдж рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореЗрд░рд╛ рдХрд╛рдо рдЙрдиреНрд╣реЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╣реИ рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рд╣реИ рдХрд┐ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рдХреИрд╕реЗ рдмрдиреЗрдВред
рд╣рдо рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рднрд╛рд╖рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╣рдо рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдзрд╛ рд░рд╛рд╕реНрддрд╛ рднреА рджреЗрдЦреЗрдВрдЧреЗред рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрди рдирд┐рдпрдореЛрдВ рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдХреЗ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реБрдЖред
рдбреАрдмрдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ

рдмреЗрд╢рдХ, рдХреЛрдИ рднреА рдбреАрдмрдЧрд┐рдВрдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рдбреАрдмрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рд╣реИрдВ:
- рд╡рд┐рдВрдбрдмрдЧ , рдЬреЛ рдЦреБрдж рдбрд┐рдмрдЧрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрдореЛрд░реА рдбрдВрдк рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореГрджреНрдз рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИред рдПрдХ рдореЗрдореЛрд░реА рдбрдВрдк рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдЖрдк рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░, рдХреЙрд▓-рд╕реНрдЯреИрдХреНрд╕ рдХрд╛ рдореВрд▓реНрдп рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрдореЛрд░реА рдбрдВрдк рд╕реНрдерд┐рд░ рд╣реИред
- PerfView , ETW рддрдХрдиреАрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рд╣реИред
- Sysinternals Mark Russinovich рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреА рдЧрдИ рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЙрдкрдХрд░рдг рдореЗрдВ рдереЛрдбрд╝реА рдФрд░ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рдЧрд┐рд░рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛
рдЖрдЗрдП рдЕрдкрдиреЗ рдЬреАрд╡рди рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдиреИрдЪреНрдЫрд┐рдХ рдкреНрд░рдХреГрддрд┐ рдХреИрд╕реЗ рдЕрдХреНрд╖рдорддрд╛ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИред
рд╢рд╛рдпрдж, рдпрд╣ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рд╣реБрдЖ рд╣реИ, рдЬрдм рдЖрдк рдПрдХ рдирдИ рдХрдВрдкрдиреА рдореЗрдВ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдХрдВрдкрдиреА рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рджрд┐рди рд╕реЗ рдЖрдк рдЕрдкреВрд░рдгреАрдп рд▓рд╛рдн рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рддреЛ рдпрд╣ рдореЗрд░реЗ рд╕рд╛рде рдерд╛ред рдЙрд╕ рд╕рдордп, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реЗрд╡рд╛ рдереА рдЬреЛ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП html, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рдереАред
рд╕реЗрд╡рд╛ .Net 3.0 рдХреЗ рддрд╣рдд рд▓рд┐рдЦреА рдЧрдИ рдереА рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдереАред рдЗрд╕ рд╕реЗрд╡рд╛ рдХреА рдПрдХ рдЫреЛрдЯреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдереА - рдпрд╣ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдИред рдкреНрд░рд╛рдпрдГ рд╣рд░ рджреЛ рд╕реЗ рддреАрди рдШрдВрдЯреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдлреЗрд▓ рд╣реЛрддрд╛ рд╣реИред рд╣рдордиреЗ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рддрдп рдХрд┐рдпрд╛ - рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рдмрд╛рдж рд╕реЗрд╡рд╛ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдкреБрдирдГ рдЖрд░рдВрдн рдЧреБрдг рд╕реЗрдЯ рдХрд░реЗрдВред

рд╕реЗрд╡рд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рдереА рдФрд░ рд╣рдо рдЗрд╕реЗ рдЬреАрд╡рд┐рдд рд░рдЦ рд╕рдХрддреЗ рдереЗред рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЧрдпрд╛ рдФрд░ рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдореИрдВрдиреЗ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд╡рд╣ рдерд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ред
рдЕрдЧрд░ рдХреБрдЫ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ .NET рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╣рд╛рдВ рдЬрд╛рддреЗ рд╣реИрдВ? рд╡реЗ EventViewer рдкрд░ рдЬрд╛рдПрдВред рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ рдореБрдЭреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ рдХрд┐ рд╕реЗрд╡рд╛ рдЧрд┐рд░ рдЧрдИред рдореВрд▓ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рдереЗ, рди рд╣реА рдХреЙрд▓-рд╕реНрдЯреИрдХред

рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рджреНрдз рдЙрдкрдХрд░рдг рд╣реИ - рд╣рдо рдкреВрд░реЗ
main
рдХреЛ
try-catch
рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВред
try { ProcessRequest(); } catch (Exception ex) { LogError(ex); }
рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рд╣реИ:
try-catch
рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдпрд╣ рд╣рдореЗрдВ рдмрдЧ рджреЗрдЧрд╛, рд╣рдо рдЗрд╕реЗ рдкрдврд╝реЗрдВрдЧреЗ рдФрд░ рд╕реЗрд╡рд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдВрдЧреЗред рд╣рдо рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рд╕реЗрд╡рд╛ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рдПрдХ рдФрд░
catch
рдЬреЛрдбрд╝реЗрдВред
try { ProcessRequest(); } catch (Exception ex) { LogError(ex); } catch { LogError(); }
рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ: рд╕реЗрд╡рд╛ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рд▓реЙрдЧ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдЦрд┐рд░реА рдЪреАрдЬ рдЬреЛ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИ, рд╡рд╣
finally
, рдЬрд┐рд╕реЗ рд╣рдореЗрд╢рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
try { ProcessRequest(); } catch (Exception ex) { LogError(ex); } catch { LogError(); } finally { LogEndOfExecution(); }
рд╣рдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рд╕реЗрд╡рд╛ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рддреАрди рджрд┐рди рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ, рдЕрдм рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдЪрд╛рд░ рдЖ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдЖрдЦрд┐рд░рдХрд╛рд░ рдХреБрдЫ рдФрд░ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдореЗрдореЛрд░реА рдбрдВрдк рджреЗрдЦреЗрдВ, рдЖрджрд┐ред рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдЬреИрд╕реЗ рдПрдХ рдФрд░ рджреЛ рджрд┐рди рдФрд░ рдореИрдВ рдЗрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛ ...
рджреЛ рд╕рдкреНрддрд╛рд╣ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВред

рдореИрдВрдиреЗ PerformanceMonitor рдореЗрдВ рджреЗрдЦрд╛, рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рдПрдХ рд╕реЗрд╡рд╛ рджреЗрдЦреА рдЬреЛ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдлрд┐рд░ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рдлрд┐рд░ рдЧрд┐рд░ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ
рдирд┐рд░рд╛рд╢рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реЗрдмрд▓ рдореЗрдВ, рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╣рд╛рдВ рд╣реИ? рдХрдИ рдШрдВрдЯреЛрдВ рдХреЗ рдзреНрдпрд╛рди рдХреЗ рдмрд╛рдж, рд╕рдорд╕реНрдпрд╛ рдЕрдЪрд╛рдирдХ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИ:

рд▓рд╛рд▓ рд░реЗрдЦрд╛ рджреЗрд╢реА рд╣реИрдВрдбрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИред рдПрдХ рдореВрд▓ рд╕рдВрднрд╛рд▓ рдПрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдПрдХ рд╕рдВрджрд░реНрдн рд╣реИ: рдлрд╝рд╛рдЗрд▓, рд░рдЬрд┐рд╕реНрдЯреНрд░реА, рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреБрдВрдЬреА, рдореНрдпреВрдЯреЗрдХреНрд╕, рдЖрджрд┐ред рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдХреБрдЫ рдЕрдЬреАрдм рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП, рд╣реИрдВрдбрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдЙрди рдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдЬрдм рд╕реЗрд╡рд╛ рдЧрд┐рд░ рдЧрдИред рдЗрд╕рд╕реЗ рдпрд╣ рдЕрдВрджрд╛рдЬрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╣реИрдВрдбрд▓ рдХрд╛ рд░рд┐рд╕рд╛рд╡ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рд╣рдо рдПрдХ рдореЗрдореЛрд░реА рдбрдВрдк рд▓реЗрддреЗ рд╣реИрдВ, рдЗрд╕реЗ WinDbg рдореЗрдВ рдЦреЛрд▓реЗрдВред рд╣рдо рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреА рдЕрдВрддрд┐рдо рдХрддрд╛рд░ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрд╡реЗрджрди рджреНрд╡рд╛рд░рд╛ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
0:000> !FinalizeQueue
рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдПрдХ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдорд┐рд▓рд╛ред

рд╕рдорд╛рдзрд╛рди рд╕рд░рд▓ рд╣реИ - WebBrowser рд▓реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЙрд▓
dispose
рдХрд░реЗрдВ:
private void Process() { using (var webBrowser = new WebBrowser()) {
рдЗрд╕ рдХрд╣рд╛рдиреА рд╕реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рджреЛ рд╕рдкреНрддрд╛рд╣ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИ рдФрд░ рдПрдХ рдмрд┐рди рдмреБрд▓рд╛рдП рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИ; рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ - рднрд╛рдЧреНрдп, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рдерд╛, рдХреЛрдИ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдкреНрд░рдХреГрддрд┐ рдирд╣реАрдВ рдереАред
рдЙрд╕рдХреЗ рдмрд╛рдж, рдореЗрд░рд╛ рдПрдХ рд╕рд╡рд╛рд▓ рдерд╛: рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХреИрд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ рдФрд░ рдХреНрдпрд╛ рдХрд░реЗрдВ?
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рддреАрди рдЪреАрдЬреЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛:
- рдбрд┐рдмрдЧрд┐рдВрдЧ рдирд┐рдпрдо
- рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдоред
- рд╕рдХреНрд░рд┐рдп рдбрд┐рдмрдЧрд┐рдВрдЧ рддрдХрдиреАрдХред
рдбрд┐рдмрдЧрд┐рдВрдЧ рдирд┐рдпрдо
- рдЧрд▓рддреА рдХреЛ рджреЛрд╣рд░рд╛рдПрдВред
- рдпрджрд┐ рдЖрдкрдиреЗ рддреНрд░реБрдЯрд┐ рдареАрдХ рдирд╣реАрдВ рдХреА рд╣реИ, рддреЛ рдпрд╣ рддрдп рдирд╣реАрдВ рд╣реИред
- рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕рдордЭреЗрдВред
- рдкреНрд▓рдЧ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
- рдлреВрдЯ рдбрд╛рд▓реЛ рдФрд░ рдЬреАрддреЛред
- рддрд░реЛрддрд╛рдЬрд╛ рд╣реЛрдирд╛ред
- рдпрд╣ рдЖрдкрдХрд╛ рдмрдЧ рд╣реИред
- рдкрд╛рдБрдЪ рдХреНрдпреЛрдВред
рдпреЗ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд┐рдпрдо рд╣реИрдВ рдЬреЛ рдЦреБрдж рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
рдЧрд▓рддреА рдХреЛ рджреЛрд╣рд░рд╛рдПрдВред рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдирд┐рдпрдо, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдЖрдк рдЧрд▓рддреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдмрдЧ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдорд▓реЗ рд╣реИрдВред рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рдЬреЛ рдХреЗрд╡рд▓ рдЗрдЯреЗрдирд┐рдпрдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдп рдкрд░реАрдХреНрд╖рдг рдмреЗрдВрдЪ рдХрд╛ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдвреВрдВрдврдирд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрджрд┐ рдЖрдкрдиреЗ рддреНрд░реБрдЯрд┐ рдареАрдХ рдирд╣реАрдВ рдХреА рд╣реИ, рддреЛ рдпрд╣ рддрдп рдирд╣реАрдВ рд╣реИред рдХрднреА-рдХрднреА рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ: рдПрдХ рдмрдЧ рдЯреНрд░реИрдХрд░ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрдзреЗ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рдерд╛, рдХрд┐рд╕реА рдиреЗ рдЗрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ, рдФрд░ рдмрд╕ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рд╣рдо рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдореМрдХрд╛ рдЪреВрдХ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдордЭрдиреЗ рдХрд╛ рдореМрдХрд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рд╕рд┐рд╕реНрдЯрдо рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреЛрдИ рднреА рдмрдЧ рдХреБрдЫ рд╕реАрдЦрдиреЗ, рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХрд╛ рдПрдХ рдирдпрд╛ рдЕрд╡рд╕рд░ рд╣реИред
рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕рдордЭреЗрдВред рдмреНрд░рд╛рдпрди рдХреЗрд░реНрдирд┐рдШрди рдиреЗ рдПрдХ рдмрд╛рд░ рдХрд╣рд╛ рдерд╛ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдиреЗ рд╕реНрдорд╛рд░реНрдЯ рдереЗ, рддреЛ рд╣рдореЗрдВ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрдЧреБрдирд╛ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдирд┐рдпрдо рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдгред рд╣рдорд╛рд░реА рдирд┐рдЧрд░рд╛рдиреА рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдмрдирд╛рддреА рд╣реИ:

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

рдЗрди рдЖрдБрдХрдбрд╝реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рд╕реЗрд╡рд╛ рдЕрдкрдирд╛ 85% рд╕рдордп рдХрдЪрд░рд╛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрддреАрдд рдХрд░рддреА рд╣реИред рдЖрдк рдкрд░рдлреЗрдХреНрдЯ рд╡реНрдпреВ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдордп рдХрд╣рд╛рдБ рдмрд┐рддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рддрд╛рд░ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕реБрдзрд╛рд░ рд╕реНрд╡рдпрдВ рд╣реА рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ: рд╣рдо рд╕рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧрд░рдмрд┐рд▓реНрдбрд░реНрд╕ рд╕реЗ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ, рд╣рдореЗрдВ 20-30% рдХреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рд╡реГрджреНрдзрд┐ рдорд┐рд▓рддреА рд╣реИред рдЙрддреНрдкрд╛рджрди рдкрд░ рдирд┐рд░реНрднрд░, рдкреБрд░рд╛рдиреЗ рд╢реЗрдбреНрдпреВрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ:

"рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕рдордЭреЗрдВ" рдирд┐рдпрдо рдХреЗрд╡рд▓ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХреИрд╕реЗ рдЪрд▓ рд░рд╣реА рд╣реИ, рд╕рдВрджреЗрд╢ рдХреИрд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдореЙрдбрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЧреНрд░рд╛рдл рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХрддрд╛рд░рдмрджреНрдз рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдереНрд░реВрдкреБрдЯ рдХреЗрд╡рд▓ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ - рдирдП рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЖрдЧрдорди рдХреА рдЧрддрд┐ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдмрд╛рд░ рдореЗрдВ 80 рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рдереЗ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдЕрдиреБрд╕реВрдЪреА рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
рдкреНрд▓рдЧ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдШрд░реЗрд▓реВ рдЙрдкрдХрд░рдг рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд╣рд╛рдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛: рдпрджрд┐ рдЙрдкрдХрд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдкреНрд▓рдЧ рдЖрдЙрдЯрд▓реЗрдЯ рдореЗрдВ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИред рдбрд┐рдмрдЧрд░ рдореЗрдВ рдХрдИ рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЕрдХреНрд╕рд░ рдЦреБрдж рдХреЛ рдпрд╣ рд╕реЛрдЪрдХрд░ рдкрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рд╕рд┐рд░реНрдл рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдпрд╛ рдЪреБрдирдирд╛ рдерд╛ред
"рдкреНрд▓рдЧ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ" рдирд┐рдпрдо рддрдереНрдпреЛрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдбрд┐рдмрдЧрд┐рдВрдЧ WinDbg рдпрд╛ PerfView рдХреЛ рдкреНрд░реЛрдбрдХреНрд╢рди рдорд╢реАрдиреЛрдВ рдкрд░ рдЪрд▓рд╛рдиреЗ рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рддрдереНрдпреЛрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рд╕реЗрд╡рд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗ рд░рд╣реА рд╣реИ, рддреЛ рдпрд╣ рдмрд╕ рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддреА рд╣реИред
рдлреВрдЯ рдбрд╛рд▓реЛ рдФрд░ рдЬреАрддреЛред рдпрд╣ рдкрд╣рд▓рд╛ рдФрд░ рд╢рд╛рдпрдж рдПрдХрдорд╛рддреНрд░ рдирд┐рдпрдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдбреАрдмрдЧрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдкрд░рд┐рдХрд▓реНрдкрдирд╛, рдЙрдирдХреЗ рдкреНрд░рдЪрд╛рд░ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рд╣рдорд╛рд░реА рдПрдХ рд╕реЗрд╡рд╛ рдХреЛ рд░реЛрдХрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рд╣рдо рдПрдХ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ: рд╢рд╛рдпрдж рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдЪрдХреНрд░ рд╣реИ рдЬреЛ рдХреБрдЫ рдЕрдВрддрд╣реАрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред
рдЖрдк рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдореЗрдореЛрд░реА рдбрдВрдк рд▓реЗрдирд╛ рд╣реИред рд╣рдо
~*e!ClrStack
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрдВрдк рдФрд░ рд╕рднреА рдереНрд░реЗрдбреНрд╕ рд╕реЗ рдХреЙрд▓-рд╕реНрдЯреИрдХ
~*e!ClrStack
ред рд╣рдо рддреАрди рдзрд╛рд░рд╛рдУрдВ рдХреЛ рджреЗрдЦрдирд╛ рдФрд░ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред



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

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХ рдХрд╛рд░реНрдп рдЧрд┐рд░ рдЧрдпрд╛, рдФрд░ рджреВрд╕рд░рд╛ рдирд╣реАрдВ рд╣реБрдЖред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рджреЗрдЦрд╛:
await openAsync(); _initLock.SetResult(true);
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЯрд╛рд╕реНрдХ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдЯрд╛рд╕реНрдХ
TaskCompletionSource
рдХреЛ рд╕рдЪ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдпрд╣рд╛рдБ рдкрдбрд╝рддрд╛ рд╣реИ? рддрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред рд╕рддреНрдп рдкрд░, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЗрд╕ рддрд░рд╣ рдерд╛:
try { await openAsync(); _initLock.SetResult(true); } catch(Exception ex) { _initLock.SetException(ex); }
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рджреЛ рдкрд░рд┐рдХрд▓реНрдкрдирд╛рдУрдВ рдХреЛ рд╕рд╛рдордиреЗ рд░рдЦрддреЗ рд╣реИрдВ: рдЕрдирдВрдд рд▓реВрдк рдФрд░ рдЧрддрд┐рд░реЛрдзред рдирд┐рдпрдо "рд╡рд┐рднрд╛рдЬрд┐рдд рдФрд░ рдЬреАрдд" рддреНрд░реБрдЯрд┐ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдХреНрд░рдорд┐рдХ рдЕрдиреБрдорд╛рди рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕ рдирд┐рдпрдо рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдордп рдХреЗ рд╕рд╛рде рд╡реЗ рдкреИрдЯрд░реНрди рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдФрд░ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рддрд░реЛрддрд╛рдЬрд╛ рд╣реЛрдирд╛ред рдпрд╣ рдирд┐рдпрдо рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЯреЗрдмрд▓ рд╕реЗ рдЙрдардиреЗ рдФрд░ рдЪрд▓рдиреЗ, рдкрд╛рдиреА рдкреАрдиреЗ, рдЬреВрд╕ рдпрд╛ рдХреЙрдлреА рдкреАрдиреЗ, рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреВрд░ рдХрд░рдирд╛ рд╣реИред
рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдмрддрдЦ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ
рдмрддрдЦ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк рдХрд┐рд╕реА рд╕рд╣рдХрд░реНрдореА рдХреЛ
рдмрддрдЦ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрд╕реЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдмрд╕ рд╕реБрдиреЛ рдФрд░ рд╕рд╣рдордд рд╣реЛред рдФрд░ рдЕрдХреНрд╕рд░, рд╕рдорд╕реНрдпрд╛ рдХреА рдкрд╣рд▓реА рдмрд╛рдд рдХреЗ рдмрд╛рдж, рдЖрдк рд╕реНрд╡рдпрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдвреВрдВрдврддреЗ рд╣реИрдВред
рдпрд╣ рдЖрдкрдХрд╛ рдмрдЧ рд╣реИред рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рдирд┐рдпрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред
рдПрдХ
AccessViolationException
рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереАред рдХреЙрд▓-рд╕реНрдЯреИрдХ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рддрдм рд╣реБрдЖ рдЬрдм рд╣рдордиреЗ sql рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЕрдВрджрд░ LinqToSql рдХреНрд╡реЗрд░реА рдЙрддреНрдкрдиреНрди рдХреАред

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

рддрджрдиреБрд╕рд╛рд░, рд╣рдо рдмрдЧ рдХреЛ Microsoft рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВ, рд╡реЗ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЙрдирдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ .net 4.6.1 рдореЗрдВ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВред

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

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

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

рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдЕрднреА рднреА рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рддреНрд░реБрдЯрд┐ рдХреЛ рджреЛрд╣рд░рд╛рдПрдВред рдкреНрд░рддреНрдпреЗрдХ рд╣рдЬрд╛рд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП, рд▓рдЧрднрдЧ рдПрдХ
StructureMapException
, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рджреВрд╕рд░реЗ, рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕ рд╕рдордп рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП http рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдЬрдм рд╕реНрдЯреНрд░рдХреНрдЪреНрдпреЛрд░рдкрд╛рдЗрдк рдПрдХ рдирдИ рдирд┐рд░реНрднрд░рддрд╛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИред
рддреАрд╕рд░рд╛, рд╣рдо рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрдбрдкреЙрдкрд░ рдПрдХ рд░реИрдкрд░ рд╣реИ рдФрд░ рдЕрдВрджрд░ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдЖрдВрддрд░рд┐рдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИред рд╣рдо procdump.exe рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред
procdump.exe -ma -e -f StructureMap w3wp.exe
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЕрдВрджрд░ рдПрдХ
NullReferenceException
ред

рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЗ рдХреЙрд▓-рд╕реНрдЯреИрдХ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕реНрдЯреНрд░рдХреНрдЪреБрд░реЗрд╕реНрдкреЛрд░реНрдЯ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ-рдмрд┐рд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рд╣реА рд╣реЛрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди
NullReferenceException
рд╕рдорд╕реНрдпрд╛ рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреМрди рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХреЛ рдЖрдЧреЗ рд░рдЦрд╛: рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╣рдорд╛рд░рд╛ рдХреЛрдб рдПрдХ рдЕрд╢рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ .Net рдореЗрдВ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╣рдо
NullReferenceException
рдкрд╣рд▓реЗ рдЭреВрда рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рдвреЗрд░ рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд╕рдВрднрд╡рддрдГ рдЙрд╕ рдХреЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдерд╛ред
WinDbg рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рд╣реЛрддреА рд╣реИ - рд▓рд┐рд╕реНрдЯ рдирд┐рдпрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕
!lno
ред рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рд╡рд╕реНрддреБ рдореЗрдВ рд╣рдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд╡рд╣ рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
public CompoundInterceptor FindInterceptor(Type type) { CompoundInterceptop interceptor; if (!_analyzedInterceptors.TryGetValue(type, out interceptor)) { lock (_locker) { if (!_analyzedInterceptors.TryGetValue(type, out interceptor)) { var interceptorArray = _interceptors.FindAll(i => i.MatchesType(type)); interceptor = new CompoundInterceptor(interceptorArray); _analyzedInterceptors.Add(type, interceptor); } } } return interceptor; }
рдЗрд╕ рдХреЛрдб рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ
_analyzedInterceptors
рдХрд┐ рдХреНрдпрд╛
Dictionary
рдореЗрдВ рдореВрд▓реНрдп
_analyzedInterceptors
рдореЗрдВ
_analyzedInterceptors
рд╣реИ, рдЕрдЧрд░ рд╣рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛, рддреЛ
lock
рдЕрдВрджрд░ рдПрдХ рдирдпрд╛ рдорд╛рди рдЬреЛрдбрд╝реЗрдВред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдХреЛрдб рдХрднреА рднреА рд╢реВрдиреНрдп рдирд╣реАрдВ рд▓реМрдЯ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛
_analyzedInterceptors
, рдЬреЛ рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд
Dictionary
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐
ConcurrentDictionary
ред
рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрдбрд╝ рдкрд╛рдИ рдЧрдИ, рд╣рдордиреЗ рд╕реНрдЯреНрд░рдХреНрдЪреБрд░рдкреЗрдЬрд╝ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛, рддреИрдирд╛рдд рдХрд┐рдпрд╛, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рддрдп рд╣реЛ рдЧрдпрд╛ рдерд╛ред рд╣рдорд╛рд░реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг "рд╕реАрдЦрдирд╛ рдФрд░ рдмрддрд╛рдирд╛" рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕рднреА
Dictionary
рдХреЗ рдХреЛрдб рдореЗрдВ рдПрдХ рдЦреЛрдЬ рдереА рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реЙрдХ рдФрд░ рдЬрд╛рдБрдЪ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрди рд╕рднреА рдХрд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреЛ, рдбрд┐рдмрдЧрд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдПрдХ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ рдЬреЛ рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИред рд╡рд╣ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдФрд░ рдпрд╣ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╣реИред
рдкреНрд░реЛрдПрдХреНрдЯрд┐рд╡ рдбрд┐рдмрдЧрд┐рдВрдЧ
рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ, рд╕рдХреНрд░рд┐рдп рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ "рдЬрдм рдПрдХ рдмрдЧ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред"

рдмрдЧ рдЬреАрд╡рдирдЪрдХреНрд░ рдЖрд░реЗрдЦ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдбрд┐рдмрдЧрд┐рдВрдЧ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдорд╣рддреНрд╡ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдмрдЧ рдЬрд┐рддрдирд╛ рд▓рдВрдмрд╛ рд░рд╣рддрд╛ рд╣реИ, рдЙрддрдиреЗ рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрди (рд╕рдордп) рд╣рдо рдЙрд╕ рдкрд░ рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВред
рдбреАрдмрдЧрд┐рдВрдЧ рдирд┐рдпрдо рдФрд░ рдбреАрдмрдЧрд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣рдореЗрдВ рдЙрд╕ рдХреНрд╖рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдмрдЧ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдЙрд╕ рд╕рдордп рдЕрдкрдирд╛ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрдм рдмрдЧ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╣рдореЗрдВ рдиреНрдпреВрдирддрдо рдбреАрдмрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрддреНрдкрд╛рдж (рдПрдордбреАрдкреА) рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд рдРрд╕рд╛ рдЙрддреНрдкрд╛рдж рдЬрд┐рд╕рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреБрд╢рд▓ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯ рд╣реЛред
рдПрдордбреАрдкреА рдореЗрдВ рджреЛ рдЪреАрдЬреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдлрд┐рдЯрдиреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдпреВрдПрд╕рдИ рд╡рд┐рдзрд┐ред
рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╕реБрд╡рд┐рдзрд╛рдПрдБред рдиреАрд▓ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдФрд░ рдкреБрд╕реНрддрдХ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдЗрд╡реЛрд▓реНрдпреВрд╢рдирд░реА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рд╕рд╣-рд▓реЗрдЦрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдиреНрд╣реЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреБрд╕реНрддрдХ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ, рдлрд┐рдЯрдиреЗрд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ: рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЛрдгреЛрдВ рдкрд░ рдХрд╛рдЯ рд╕рдХрддреЗ рд╣реИрдВ, рдРрд╕реЗ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдЧреБрдгреЛрдВ рдХреЛ
рдмрдирд╛рдП рд░рдЦрдирд╛ рдЬреИрд╕реЗ
рд░рдЦрд░рдЦрд╛рд╡ ,
рдкреНрд░рджрд░реНрд╢рди , рдЖрджрд┐, рдФрд░ рдРрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрднрд╛рдЧ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП - рдлрд┐рдЯрдиреЗрд╕ рд╕рдорд╛рд░реЛрд╣ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдлрд┐рдЯрдиреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд╣реИред
рдПрдордбреАрдкреА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд┐рдЯрдиреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдбрд┐рдмрдЧреИрдмрд┐рд▓рд┐рдЯреА рдЯреЗрд╕реНрдЯ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: NUnit, MSTest рдЗрддреНрдпрд╛рджрд┐ред рд▓реЗрдХрд┐рди, рдЪреВрдВрдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЕрдХреНрд╕рд░ рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░ Pester (рдкрд╛рд╡рд░рд╢реЗрд▓ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рдХрд╛ рдкреНрд▓рд╕ рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рдпрд╣ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрдкрдиреА рдХреЗ рдЕрдВрджрд░ рд╣рдо рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╣рдо рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ; рд▓реЙрдЧрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ; pdb рдЕрдХреНрд╖рд░ рд╣рдореЗрд╢рд╛ рдкреНрд░рддреАрдХ рд╕рд░реНрд╡рд░ рдХреЛ рджрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡реЗ рд╕рдореНрдореЗрд▓рди рд╣реЛрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдкрд░рдЦреЗрдВрдЧреЗред
Describe 'Debuggability' { It 'Contains line numbers in PDBs' { Get-ChildItem -Path . -Recurse -Include @("*.exe", "*. dll ") ` | ForEach-Object { &symchk.exe /v "$_" /s "\\network\" *>&1 } ` | Where-Object { $_ -like "*Line nubmers: TRUE*" } ` | Should -Not тАУBeNullOrEmpty } }
рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдЗрд╕ рдмрд╛рдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА pdb рдЕрдХреНрд╖рд░ рдкреНрд░рддреАрдХ рд╕рд░реНрд╡рд░ рдХреЛ рджрд┐рдП рдЧрдП рдереЗ рдФрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рджрд┐рдП рдЧрдП рдереЗ, рдпрд╛рдиреА рдЬрд┐рдирдХреЗ рдЕрдВрджрд░ рд▓рд╛рдЗрди рдирдВрдмрд░ рдереЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрддреНрдкрд╛рджрди рдХрд╛ рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд▓реЗрдВ, рд╕рднреА exe рдФрд░ dll рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдвреВрдВрдвреЗрдВ, рдЗрди рд╕рднреА рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ syschk.exe рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд╕ рдХрд░реЗрдВ, рдЬреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдбреАрдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред Syschk.exe рд╕реБрд╡рд┐рдзрд╛ рдмрд╛рдЗрдирд░реА рдХреЛ рдкреНрд░рддреАрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪрддреА рд╣реИ рдФрд░, рдЕрдЧрд░ рдпрд╣ рд╡рд╣рд╛рдВ рдПрдХ pdb рдлрд╝рд╛рдЗрд▓ рдкрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ, рд╣рдо "рд▓рд╛рдЗрди рдирдВрдмрд░: TRUE" рд▓рд╛рдЗрди рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЕрдВрддрд┐рдо рдореЗрдВ рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдкрд░рд┐рдгрд╛рдо "рд╢реВрдиреНрдп рдпрд╛ рд░рд┐рдХреНрдд" рдирд╣реАрдВ рд╣реИред
рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдПрдХ рд╕рддрдд рддреИрдирд╛рддреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдмреАрдд рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд┐рдЯрдиреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдореИрдВ рдХреЛрдб рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред
Describe 'Debuggability' { It 'Contains package for logging' { Get-ChildItem -Path . -Recurse -Name "packages.config" ` | ForEach-Object { Get-Content "$_" } ` | Where-Object { $_ -like "*nlog*" } ` | Should -Not тАУBeNullOrEmpty } }
рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рд╣рдо рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВред рдлрд╛рдЗрд▓ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрди рдореЗрдВ рдиреЛрдбрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реА рддрд░рд╣, рд╣рдо рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд╣рд╕рдВрдмрдВрдз рдЖрдИрдбреА рдлрд╝реАрд▓реНрдб рдХреЛ рдиреЛрдб рдлрд╝реАрд▓реНрдб рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧ рдХреЗ рддрд░реАрдХреЗред рдПрдордбреАрдкреА рдХреЗ рдЕрдВрддрд┐рдо рдЪреАрдЬрд╝ рдореЗрдВ рд╡реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдореИрдВ USE рдкрджреНрдзрддрд┐ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕реЗ рдмреНрд░реЗрдВрдбрди рдЧреНрд░реЗрдЧ рдиреЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдмрдирд╛рдпрд╛ рдерд╛ред : - , : utilization (), saturation (), errors (), .
, Circonus ( monitoring soft),
.

, , , тАФ , тАФ , тАФ , . , USE- .
- -, , , :
, . , .

, , тАФ . , , 4-5% CPU.

тАФ , . etrace.
etrace --kernel Process ^ --where ProcessName=Ex5-Service ^ --clr Exception
realtime ETW-events .

,
OutOfMemoryException
. , , ? тАФ , , .
while (ShouldContinue()) { try { Do(); } catch (OutOfMemoryException) { Thread.Sleep(100); GC.CollectionCount(2); GC.WaitForPendingFinalizers(); } }
тАФ - . , .
public class Cache { private static ConcurrentDictionary<int, String> _items = new ... private static DateTime _nextClearTime = DateTime.UtcNow; public String GetFromCache(int key) { if (_nextClearTime < DateTime.UtcNow) { _nextClearTime = DateTime.UtcNow.AddHours(1); _items.Clear(); } return _items[key]; } }
, . , . USE .

тАФ , .
, , .
- тАФ . , , тАФ . тАФ , -. , .
- . ; Exception , , - .
- Minimum Debuggable Product тАФ , .
, ?
- .
- .
- .
тАФ Jon Skeet.
DotNext , ( ).