рдЯрд╛рдЗрдорд░ .Net рдореЗрдВ

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рд╣реИ рдЬрдм рдореИрдВ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдпрд╛ рд╣реВрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ .NET рдХреЗ рдорд╛рдирдХ рдорд╛рдирдХ рдореЗрдВ рд╕реЗ рдПрдХ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - System.Threading.Timerред
рдпрд╛рдиреА рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡реЗ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдордЭ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрдорд░ рдХреБрдЫ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдереНрд░реЗрдбрдкреВрд▓ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ - рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдордп-рд╕рдордп рдкрд░ рдХреБрдЫ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЯрд╛рдЗрдорд░ рдмрдирд╛рдиреЗ, рдФрд░ 1000 рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд▓реЛрдЧ рдЪрд┐рдВрддрд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВ: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдХреБрдЫ рдЧрд▓рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЪрд╛рдирдХ рдпрд╣ рдЕрднреА рднреА 1000 рдзрд╛рдЧреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рднреА рдбрд░рддреЗ рд╣реИрдВред

рдореИрдВ рдЗрд╕ "рд░рд╣рд╕реНрдпрдордп" System.Threading.Timer рдкрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдЕрдиреНрдп рдЯрд╛рдЗрдорд░ рдЕрднреА рднреА .NET рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, GUI рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП)ред рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп "рд╕рд┐рд╕реНрдЯрдо" рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣рдо рдХреИрд╕реЗ рдПрдХ рдЯрд╛рдЗрдорд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

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

рдПрдХ рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрд░реНрдиреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ "рдЯрд╛рдЗрдорд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХрд╛рд░реНрдп рдХреА рдкреНрд░рддреНрдпреЗрдХ рдЖрд╡рдзрд┐рдХ рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрд░реНрдиреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдЙрдирд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рд╢реИрд▓реА рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВ:

WaitHandle.WaitAny(/*timerHandles[]*/) 

рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╛ рдирд╣реАрдВ, .NET рдореЗрдВ рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ (рдХрд░реНрдиреЗрд▓ рдЯрд╛рдЗрдорд░) рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рд╣реИред

рдПрдХ рддреАрд╕рд░рд╛ рдЯрд╛рдЗрдорд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдХрд▓реНрдк рд╣реИ (System.Threading.Timer рд╡рд░реНрдЧ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд)
рдкреА / рдЗрдирд╡реЛрдХ рддрдВрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЛрдореЗрди рдореЗрдВ рдкрд╣рд▓рд╛ рдЯрд╛рдЗрдорд░ рдмрдирд╛рддреЗ рд╕рдордп, рдПрдХ "рдЯрд╛рдЗрдорд░" рдХрд░реНрдиреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ System.Threading.TimerQueue рд╡рд░реНрдЧ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  [SecurityCritical] [SuppressUnmanagedCodeSecurity] [DllImport("QCall", CharSet = CharSet.Unicode)] private static TimerQueue.AppDomainTimerSafeHandle CreateAppDomainTimer(uint dueTime); // some code if (this.m_appDomainTimer == null || this.m_appDomainTimer.IsInvalid) { this.m_appDomainTimer = TimerQueue.CreateAppDomainTimer(dueTime); // some code 


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

рдЫрд╡рд┐

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рдЯрд╛рдЗрдорд░ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рджреЛ рдзрд╛рдЧреЗ рд╣реИрдВ: "рдореБрдЦреНрдп" рдФрд░ "рдлрд╛рдЗрдирд▓" рдзрд╛рдЧрд╛ред рдПрдХ рд▓рд╛рдЗрди рдиреАрдЪреЗ рдЪрд▓рддреЗ рд╣реИрдВред

рдЫрд╡рд┐

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

рдЕрдм рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХрдИ рдЯрд╛рдЗрдорд░ рдмрдирд╛рддреЗ рд╣реИрдВ
System.Threading.TimerQueue рд╡рд░реНрдЧ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ред рд╡рд╣ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рд╣реИрдВред рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
  new Timer(First, null, 0, 250); 

рдпрд╣ System.Threading .imerQueueTimer рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЗрд╕рдХреА рдЖрдВрддрд░рд┐рдХ рдХрддрд╛рд░ (рдЬреЛ рдХрд┐ рд▓рд┐рдВрдХреНрдбрд▓рд┐рд╕реНрдЯ рдХреА рддрд░рд╣ рдХреБрдЫ рд╣реИ) рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рд╕рднреА рдирд┐рд░реНрдорд┐рдд рдЯрд╛рдЗрдорд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЛрдореЗрди рдХреЗ рднреАрддрд░ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫреБрдХ рд╣реВрдВ)ред
рдкрд╣рд▓реЗ рдЯрд╛рдЗрдорд░ рдХреЗ рдмрд╛рдж рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред TimerQueue рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ FireNextTimers рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред
рд╡рд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ (рдХреЛрдб рд▓рдВрдмрд╛ рд╣реИ, рдореИрдВрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рджрд┐рдпрд╛, рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ)
рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рднреА рдЯрд╛рдЗрдорд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдЯрд╛рдЗрдорд░ рдХреЗ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдиреЗ рддрдХ рд╕рдордп рдкрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд░ рдХрд░реНрдиреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдпрд╣ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдЕрдЧрд▓реЗ рдСрдкрд░реЗрд╢рди рдХрд╛ рд╕рдордп рдлрд┐рд░ рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЯрд╛рдЗрдорд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдирдП рдЕрдВрддрд░рд╛рд▓ рдкрд░ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдирдпрд╛ рдЯрд╛рдЗрдорд░ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдЕрдЧрд▓реА рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХрд╛ рд╕рдордп рдлрд┐рд░ рд╕реЗ рдЖ рдЬрд╛рдПрдЧрд╛ред

рдЖрдЗрдП 1000 рдЯрд╛рдЗрдорд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:

рдЫрд╡рд┐

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ резрежрежреж рдЯрд╛рдЗрдорд░ рдмрдирд╛рдиреЗ рд╕реЗ резрежрежреж рдзрд╛рдЧреЗ рдкреИрджрд╛ рдирд╣реАрдВ рд╣реЛрддреЗред рд╕реАрдПрд▓рдЖрд░ рдиреЗ рдХрд░реНрдиреЗрд▓ рдЯрд╛рдЗрдорд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдзрд╛рдЧрд╛ рдмрдирд╛рдпрд╛ рдФрд░ рдЯрд╛рдЗрдорд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдзрд╛рдЧреЗред

рдХреБрд▓:
рдЬрдм рдЖрдк System.Threading.Timer рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ (рдкреНрд░рддрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЛрдореЗрди) рдХрд░реНрдиреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ "рдЯрд╛рдЗрдорд░" рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдзрд╛рдЧрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ "рд╣реАрдк" рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХрд╛рдо рдХреЗ рд╕рдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
1000 рдЯрд╛рдЗрдорд░ рдХреЗ рд╕рд╡рд╛рд▓ рдкрд░ - рдХреНрдпрд╛ рдЖрд╡реЗрджрди рдореЗрдВ рдЗрддрдиреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЯрд╛рдЗрдорд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд▓рд╛рднрд╣реАрди рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдкрд░ рдЕрд▓рдЧ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдирд╛ рдХрд┐ рд╕рдордп рдХреЗ рдЕрдВрджрд░ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рд╕рд╣реА рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред

рд╡рд┐рдВрдбреЛрдЬ 7 64, .net 4.5, VS2012 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рд╕рдВрджрд░реНрдн: рдбрдлреА "рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рд╕рдорд╡рд░реНрддреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ", рдПрдордПрд╕рдбреАрдПрди

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


All Articles