рдХрд▓ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗрдорд┐рдирд╛рд░ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдиреЗрдЯ рдкрд░ рдерд╛, рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реБрдЖ рдХрд┐ рдореИрдВрдиреЗ рд╕реЗрдорд┐рдирд╛рд░ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд┐рдпрд╛ (рд╣рд╛рдБ, рдореЗрд░реЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╣рд╛рдБ рднреА рд▓реЛрдЧ рдереЗ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ)ред рд╕рдВрдЧреЛрд╖реНрдареА
.Net рдордВрдЪ рдкрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдереА, рдЬреЛ рдХрд▓ рд▓рдХреНрд╕реЙрдлреНрдЯ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗрдВрджреНрд░ рдореЗрдВ рд╣реБрдИ рдереАред
рдХреБрдЫ рдмреАрд╕ рд▓реЛрдЧ рдореМрдЬреВрдж рдереЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреАрдореЛрдВ рдХреЗ рдкрд░рд┐рдЪрд┐рдд рд▓реЛрдЧ рдереЗ рдЬрд┐рдирдореЗрдВ рдореИрдВрдиреЗ рдпрд╛ рддреЛ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛, рдпрд╛ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╣рдо рдХрд╛рдлреА рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рдереЗред рд▓реЗрдХрд┐рди 8 рд▓реЛрдЧ рдЕрдиреНрдп рдЯреАрдореЛрдВ рд╕реЗ рдереЗ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓рдХреНрд╕реЙрдлреНрдЯ рд╕реЗ рднреА рдирд╣реАрдВред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╡реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдереЗ, рд╢реБрд░реВ рд╕реЗ рд╣реА рдорд╛рд╣реМрд▓ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдерд╛: рд▓реЛрдЧреЛрдВ рдиреЗ рдореБрдЭреЗ, рдореБрдЭреЗ, рдЙрдиреНрд╣реЗрдВ рдмрджрд▓реЗ рдореЗрдВ рдЫреЗрдбрд╝рд╛ред
рд╕реЗрдорд┐рдирд╛рд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рдореЗрд░реЗ рджреЛ рд▓реЗрдЦреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдерд╛:
"рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ AsyncEnumerator" рдФрд░
"C # 5 рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдкрд░рд┐рдЪрдп" , рд╕рд╛рде рд╣реА
рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд▓реЗрдЦ:
"I # рдореЗрдВ рд╕реА Iterators" ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╡рд┐рд╕реНрддрд╛рд░, рдЬрд┐рд╕ рдкрд░ рдореИрдВ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рдерд╛; рдХреЗрд╡рд▓ RX-s рджреЛ рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реНрдкреНрд░реЗ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдкрд░рд┐рдгрд╛рдо 50 рд╕реНрд▓рд╛рдЗрдб рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдереА, рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдереА:
1. рдПрдХрд░рд╕рддрд╛ рдФрд░ рд╡рд╣ рд╕рдм рдХреБрдЫ рдмреНрд▓рд╛ рдмреНрд▓рд╛ рдмреНрд▓рд╛ред
2. рдЙрджрд╛рд╣рд░рдгреЛрдВ, рдЙрдирдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрдЪрд╛рд▓рдиред
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реАрдкреАрдпреВ-рдмрд╛рдЙрдВрдб рдФрд░ рдЖрдИрдУ-рдмрд╛рдЙрдВрдб рдСрдкрд░реЗрд╢рди рдЬреИрд╕реА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рдерд╛ рддрд╛рдХрд┐ рд╣рд░ рдХреЛрдИ рд╕рдордЭ рд╕рдХреЗ рдХрд┐ рд╡реЗ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рдереЗред
3. .Net рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдкреИрдЯрд░реНрди: (1)
рд╢рд╛рд╕реНрддреНрд░реАрдп Async рдкреИрдЯрд░реНрди рдФрд░ (2)
рдШрдЯрдирд╛ рдЖрдзрд╛рд░рд┐рдд Async рдкреИрдЯрд░реНрди ред
рд▓рдЧрднрдЧ рд╣рд░ .Net рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ BeginXXX / EndXXX рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдиреЗ
BackgroundWorker рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рд░ рдХреЛрдИ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ BeginXXX / EndXXX рддрд░реАрдХреЗ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреИрдЯрд░реНрди рд╣реИрдВ, рдФрд░
рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдбрд╡реЙрдХрд░ рдИрд╡реЗрдВрдЯ-рдЖрдзрд╛рд░рд┐рдд Async рдкреИрдЯрд░реНрди рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИред
4. рдореМрдЬреВрджрд╛ рдкреИрдЯрд░реНрди рдХрд╛ рдиреБрдХрд╕рд╛рди
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕реНрд▓рд╛рдЗрдб рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЗрд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдлрд┐рд░ рднреА, рдпрд╣ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдореМрдЬреВрджрд╛ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреА рд╡рд┐рдХреГрддрд┐, рдЬрд┐рд╕рдиреЗ рдЬреЗрдл рд░рд┐рдХреНрдЯрд░ рдФрд░ рдПрд░рд┐рдХ рдореЗрдпрд░ рдЬреИрд╕реЗ рдХреЙрдорд░реЗрдбреЛрдВ рдХреЛ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдмрдХрд╡рд╛рд╕, рдЬреИрд╕реЗ рдХрд┐ AsyncEnumerator Classes рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ, рдЬреИрд╕реЗ
рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдореИрдВ рдХреБрдЫ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪреБрдк рд╣реВрдБ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ (*) рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
5.
рдкреЙрд╡рд░рдЯреНрд░реЗрдбрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, AsyncEnumerator рд╡рд░реНрдЧред
рд░рд┐рдХреНрдЯрд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдорд╣рддреНрд╡ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬреЛ рд╕реА # 5 рднрд╛рд╖рд╛ рдХреЗ рдирдП рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: рдкреНрд░рддреАрдХреНрд╖рд╛рд░рдд рдФрд░ рдПрд╕реНрдХрд┐рдВрд╕ред рд▓реЗрдХрд┐рди, рдЪреВрдВрдХрд┐ рдпрд╣ рд╡рд░реНрдЧ рдиреНрдпреВрдирддрдо рдЕрддрд┐рд░рд┐рдХреНрдд рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╡рд╛рд╣ рдХреЛ рддреБрд░рдВрдд "рдЕрд╕рд┐рд╕реНрдЯ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕реАрдзрд╛" рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХрдорд╛рддреНрд░ рдЕрд╡рдзрд╛рд░рдгрд╛ рдЬрд┐рд╕реЗ рдорд╛рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд╣ рд╣реИ рдЗрдЯрд░реЗрдЯрд░ рдмреНрд▓реЙрдХред
5.1ред рд╡рд┐рд╖рдп рд╕реЗ рдзреНрдпрд╛рди рднрдЯрдХрд╛рдирд╛: рдЗрдЯрд░реЗрдЯрд░ рдмреНрд▓реЙрдХред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рдерд╛ рдХрд┐ рдпрд╣ рд╕рдордЭрд╛рддреЗ рд╣реБрдП рдХрд┐ рдХреИрд╕реЗ AsyncEnumerator рд╡рд░реНрдЧ рдпрд╣ рд╕рдордЭреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ itter рдмреНрд▓реЙрдХ рдХрд╛рдо рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдФрд░ рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рд╕рд╣реА рдХрд╛рдо рдХрд┐рдпрд╛; рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╡рд╛рдХрд┐рдл рд╣реИрдВ рдХрд┐ рдЗрдЯрд░реЗрдЯрд░ рдмреНрд▓реЙрдХ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рд░ рдХреЛрдИ "рдЯреЗрдореНрдкрд▓реЗрдЯ рдмреНрд░реЗрдХ" рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИ рдЬреЛ рд░рд┐рдЯрд░реНрди рд╕реВрдЯ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВред рдкреВрд░реА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рджреМрд░рд╛рди, рдореИрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд▓реМрдЯ рдЖрдпрд╛ рдФрд░ рдЙрдирдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ред
6. C # 5. рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рдПрд╕реНрд╕реЗрдВрдХ рдХрд░рдирд╛ рдФрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ред
рдпрд╣рд╛рдВ, рдореИрдВрдиреЗ рд╕рдВрднрд╡рддрдГ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧрд▓рддреА рдХреА: рдореИрдВрдиреЗ
рдЯрд╛рд╕реНрдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдмрд╣реБрдд рдХрдо рдзреНрдпрд╛рди рджрд┐рдпрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рджреЛ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ: (1) рдирд┐рд╖реНрдкрд╛рджрди рдереНрд░реЗрдб рдХрд╛ "рдЕрд╡реНрдпрд╡рд╕реНрдерд╛", рдЬреЛ рдХрд┐ рдЗрдЯрд┐рдЯрд░ рдмреНрд▓реЙрдХ рдФрд░ "рдХрд╛рд░реНрдп" (
рдХрд╛рд░реНрдп рдФрд░
рдХрд╛рд░реНрдп <рдЯреА> ) рдХреЗ 2 рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИред рд▓реЗрдХрд┐рди, рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдШрдЯрдХ рдХреА рдЬрд╛рдВрдЪ рдХреА, рдФрд░ рджреВрд╕рд░реА - рдХреЗрд╡рд▓ рд╕рддрд╣реА рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪ рдХреАред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдЪрд▓рддреЗ-рдЪрд▓рддреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рджреЗрдирд╛ рдкрдбрд╝рд╛, рдЙрдирдХреА рд╕рднреА рдирд┐рд░рдВрддрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕рдВрджрд░реНрдн рдФрд░ рдЗрдВрдЯрд░рдХрдиреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдЯреИрдВрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕ / рдПрдВрдбрдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕ рдФрд░ рдореЗрд░реА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рдЙрдиреНрд╣реЗрдВ рджрд┐рдЦрд╛рдирд╛ред
рдкрд╣рд▓реЗ рд╕реЗ рдЕрдзреНрдпрдпрди рдХреА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рддреАрдХреНрд╖рд╛ рдФрд░ рдПрд╕рд┐рдВрдХреНрд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рд╣рдо IEnumerator <int> рдХреЛ async рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдкреИрджрд╛рд╡рд╛рд░ рд╡рд╛рдкрд╕реА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо AsyncEnumerator рд╕реЗ C # 5.0 рдХреА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВред
7. рдирд┐рд╖реНрдХрд░реНрд╖, рдкреНрд░рд╢реНрди, рдЖрджрд┐ред
рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢рдЖрдЬ рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдбрд╝рд╛рди рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдерд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд╖реНрдХрд░реНрд╖ рдХрд┐рдП рдЧрдП рдереЗред рдЖрдкрдХреЛ рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ:
1. рдореИрдВ рдХрднреА-рдХрднрд╛рд░ рд╕реНрд▓рд╛рдЗрдбреНрд╕ рдкрд░ рд╕реНрдХреЛрд░ рдХрд░рддрд╛ рдерд╛ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдмрд╛рдд рдХрд░рддрд╛ рдерд╛, рдХрднреА-рдХрднреА рдЖрдЧреЗ рдХреА рд╕реНрд▓рд╛рдЗрдбреНрд╕ рдореЗрдВред
2. рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд╢рдмреНрдж рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЗрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдРрд╕рд╛ рдирд╣реАрдВ рдерд╛, рджрд░реНрд╢рдХреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЦреЛ рдЧрдпрд╛ рдерд╛ред
3. рд╕рд░рд▓ рд╕реЗ рдЬрдЯрд┐рд▓ рддрдХ рдмрд╛рдд рдХрд░реЗрдВ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВред рдРрд╕реЗ рдорд╛рдорд▓реЗ рдереЗ рдЬрдм рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдореИрдВрдиреЗ рдХреБрдЫ рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рддрд╣реА рд░реВрдк рд╕реЗ рдирд┐рдкрдЯрд╛, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪрд╛ред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢реНрди рдереЗ, рдФрд░ рдХреБрдЫ рдЧрд▓рддрдлрд╣рдореА рджрд┐рдЦрд╛рдИ рджреАред
4. рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕рдВрд╡рд╛рдж рдХрд░реЗрдВред рдореИрдВрдиреЗ рд╕рд╡рд╛рд▓ рдкреВрдЫрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдХрднреА-рдХрднреА рдпрд╣ рдордЬрд╛рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджрд░реНрд╢рдХреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
5. рдЕрдзрд┐рдХ рдЪрд┐рддреНрд░ рдФрд░ рдХрдо рдХреЛрдбред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕реНрд▓рд╛рдЗрдбреНрд╕ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд╣реЛрддреЗ рдереЗ, рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдореЗрдВ рдпрд╣ рдФрд░ рднреА рдЕрдзрд┐рдХ рдерд╛ред рдХрдИ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдмреНрд▓реЙрдХреЛрдВ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдЗрд╕ рд╕рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмрдХрд╡рд╛рд╕ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рджреГрдврд╝рддрд╛ рд╕реЗ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЛрдб рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдЬрдЯрд┐рд▓ рдзрд╛рдЧреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рд╣реИред
6. рд╣рд╛рдВ, рдореИрдВрдиреЗ рдХрд╛рд░реНрдпреЛрдВ (рдЯрд╛рд╕реНрдХ, рдЯрд╛рд╕реНрдХ <рдЯреА>, рдЖрджрд┐) рдкрд░ рдмрд╣реБрдд рдХрдо рдзреНрдпрд╛рди рджрд┐рдпрд╛ред рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ ContinueWith рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдФрд░ рдЖрд░реЗрдЦрдг рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрд╣рддрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
7. рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдирдВрдмрд░ рдирд╣реАрдВ рдереЗ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рд▓реЗрдЬрд░ рдкреЙрдЗрдВрдЯрд░ рдирд╣реАрдВ рдерд╛ред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдХрднреА-рдХрднреА рдореБрдЭреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд╣реЙрд▓ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рджреМрдбрд╝рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ рдФрд░ рдЕрдкрдиреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рдХреБрдЫ рдмрддрд╛рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ред
8. рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдЖрдкрдХреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдкрдХреНрд╖ рд╕реЗ рджреЗрдЦрдиреЗ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЖрдкрдХреЛ рдХреНрдпрд╛ рдкрд╕рдВрдж рдЖрдпрд╛:рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдХрдИ рдореБрджреНрджреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреЛрд╖реНрдареА рдПрдХ рд╕рдлрд▓рддрд╛ рдереАред рдореБрдЭреЗ рдпрд╣ рддрдереНрдп рдкрд╕рдВрдж рдЖрдпрд╛ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╕рдВрдЧреЛрд╖реНрдареА рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИ рдФрд░ рджрд░реНрд╢рдХреЛрдВ рдиреЗ рдЗрд╕реЗ рд╕реБрдирдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ред рд╕реБрдирдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдФрд░ рд╕рдордЭрджрд╛рд░ рдереЗред рдпрд╣ рд╕рдЪ рд╣реИ, рдХреЗрд╡рд▓ "рдореЗрд░реЗ рдЕрдкрдиреЗ" рдиреЗ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЬреЛ рд▓реЛрдЧ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдереЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рд╕рд┐рд░ рд╣рд┐рд▓рд╛рдпрд╛ рдФрд░ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдХреЛ рдЕрдзрд┐рдХрддрдо рдЙрдард╛ рджрд┐рдпрд╛, рдЬреИрд╕реЗ рд╕рд╡рд╛рд▓ рдкреВрдЫрддреЗ рд╣реИрдВ: "рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдХреНрдЯрд░ рдХреМрди рд╣реИ?"
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рдпрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ, рдпрд╛ рдЬреЗрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: (1) рдПрдХ
рдкреНрд░рд╕реНрддреБрддрд┐ ; (реи)
рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд╖реЗрдкрдг ред
-----------------------------
(*) рдпрд╣ рдПрдХ рдХрдВрдкрдиреА рдХреЗ рд╕рд╛рде рдПрдВрдбрд░реНрд╕ рд╣реЗрд▓реНрд╕рдмрд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдХреНрд╖реНрдо рдЧрдардмрдВрдзрди рд╣реИ рдЬреЛ C # рдФрд░ VB.NET рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ;)