рдирдорд╕реНрдХрд╛рд░ рдкрд╛рдардХред .NET Core 2.1 рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рд╣реБрдП рдХрд╛рдлреА рд╕рдордп рдмреАрдд рдЪреБрдХрд╛ рд╣реИред рдФрд░ рд╕реНрдкреИрди рдФрд░ рдореЗрдореЛрд░реА рдЬреИрд╕реЗ рд╢рд╛рдВрдд рдирд╡рд╛рдЪрд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реИрдВ, рдЖрдк рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдкрдврд╝, рджреЗрдЦ рдФрд░ рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ System.IO рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреНрд╕ рдХреЛ рд╕рдорд╛рди рдзреНрдпрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ
рдПрдХрдорд╛рддреНрд░ рдкреЛрд╕реНрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдХрдИ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдЕрдиреБрд╡рд╛рджрд┐рдд рдФрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрд╕ рддрдХрдиреАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЙрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдХреЛрдгреЛрдВ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХреЗред

рдкрд░рд┐рдЪрдп
рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЧрддрд┐ рджреЗрдирд╛ рд╣реИред рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ Kestrel (ASP.NET Core рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡реЗрдм рд╕рд░реНрд╡рд░) рдХреА рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣
рдирдЧреЗрдЯ рдкреИрдХреЗрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╢реНрд╡рд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╡рд┐рд╖рдп рдореЗрдВ рддрд▓реНрд▓реАрди рд╣реЛрдВ, рд╣рдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рддрдВрддреНрд░ рдХреА рдореЗрдореЛрд░реАрд╕реНрдЯреНрд░реАрдо рдХреЗ рдмреЗрд╣рддрд░ рдПрдирд╛рд▓реЙрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореВрд▓ рдореЗрдореЛрд░реАрд╕реНрдЯреНрд░реАрдо рдХреА рд╕рдорд╕реНрдпрд╛ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реИрдВ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ рдХрд┐ рдореЗрдореЛрд░реАрд╕реНрдЯреНрд░реАрдо рдХреЗ рдЕрдВрджрд░ рдПрдХ рдирд┐рдЬреА рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдлрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдкрдврд╝рдиреЗ рдФрд░
рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рдЖрдк рдбреЗрдЯрд╛ рдХреА рдирдХрд▓ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрд╕ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рд╣рдо рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдВрддрд░рд┐рдХ рдмрдлрд╝рд░ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА, рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ рджреМрд░рд╛рди, рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреА рдЬрд╛рдПрдЧреАред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдореГрддрд┐ рдХрд╛ рд╕рдмрд╕реЗ рддрд░реНрдХрд╕рдВрдЧрдд рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИред
System.IO.Pipelines рд╕рднреА рдзрд╛рд░рд╛рдУрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рдпрд╣ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдХрд░рдг рд╣реИред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЦреБрдж рдХреЛ рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЛрдВ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░реЗрдВ, рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рджреЗрдЦреЗрдВ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред
рдЖрдЗрдП рдЗрдВрдЯрд░реНрдирд▓реНрд╕ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рд░рд▓ рдХреЛрдб рдЯреБрдХрдбрд╝реЗ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдм System.IO.Pipelines рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдореВрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдкрдврд╝рдиреЗ-рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд╡рдВрдЯрди рдХреЗ рдмрд┐рдирд╛ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдХреБрдЫ рддрд░реАрдХреЗ рдЬреЛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдЖрдХрд░реНрд╖рдХ рд╣реИрдВ, рдЗрд╕ рдирд┐рдпрдо рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рдЖрдк рдЬрд┐рд╕ рдХреЛрдб рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдирдП рдФрд░ рдирдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЗрдВрдЯрд░реНрдирд▓реНрд╕ рднрд╛рд╖рд╛ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рд╡реНрдпрд╛рдкрдХ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рд╕реНрдкреИрди, рдореЗрдореЛрд░реА, рдСрдмреНрдЬреЗрдХреНрдЯ рдкреВрд▓, рд╡реИрд▓реНрдпреВрд╕реНрдХреИрд╕реНрдХ рдФрд░ рдЗрддрдиреЗ рдкрд░ред рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдорд╣рд╛рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрдо рд╕реЗ рдХрдо рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИред
рдПрдХ рд╕рдордп рдореЗрдВ, рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░реНрд╕ C # рдореЗрдВ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдереЗ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдЖрдк рддрд░реАрдХреЛрдВ рдХреЛ рдПрдХ рд╡рд░реНрдЧ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдлреЗрдВрдХ рд╕рдХрддреЗред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╕реНрдЯреНрд░реАрдо рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ / рдЪрд╛рд╣рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ CanRead, CanWrite рдФрд░ CanSeek рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЫреЛрдЯреА рдмреИрд╕рд╛рдЦреА рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рд╣рд╛рд▓рд╛рдд рдЕрд▓рдЧ рд╣реЛ рдЧрдПред
рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 2 рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдкрд╛рдЗрдкрд╡рд┐рдЯрд░ рдФрд░
рдкрд╛рдЗрдкрд░реАрдбрд░ ред рдЗрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдХреЛрдб рдХреА рд▓рдЧрднрдЧ 50 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ рдФрд░ рдЫрджреНрдо-рдкрд╣рд▓реВ рд╣реИрдВ (рдЗрд╕рдХреЗ рдЕрд╡рддрд╛рд░реЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдХреНрд▓рд╛рд╕рд┐рдХ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡рд░реНрдЧ
рдкрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рд╡рд░реНрдЧ рдХреЛ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВ, рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ), рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ 5 рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рджрд╕реНрдп рд╣реЛрддреЗ рд╣реИрдВ: 2 рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛, 2 рдХреЗрд╡рд▓-рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ - рд░реАрдбрд░ рдФрд░ рд▓реЗрдЦрдХ, рд░реАрд╕реЗрдЯ () рд╡рд┐рдзрд┐, рдЬреЛ рдЖрдВрддрд░рд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЙрдирдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рд╛рдЬреНрдп рдореЗрдВ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХрдХреНрд╖рд╛ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╢реЗрд╖ рддрд░реАрдХреЗ рдЖрдВрддрд░рд┐рдХ рд╣реИрдВ рдФрд░ рдЫрджреНрдо-рдкрд╣рд▓реБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЗрдП рдкрд╛рдЗрдк рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ
рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрджрд╛рд╣рд░рдг 320 рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рд╣реИ, рдЬреЛ рдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ (рд▓рдЧрднрдЧ рдПрдХ рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдХрд╛ рдПрдХ рддрд┐рд╣рд╛рдИ, рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕реЗ 2 рдореИрдирдЪреЗрд╕реНрдЯрд░ рдорд╛рд░реНрдХ I рдХреА рдпрд╛рдж рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХреЗ)ред рддреЛ рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рднрд╛рд░реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЖрд╡рдВрдЯрди рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╕реНрддреБ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИред рдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдЗрд╕ рдХрдерди рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реНрдХ рджреЗрддрд╛ рд╣реИред рдкреВрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдПрдВ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд░рд╣реЗрдВрдЧреА (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП)ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрдЧ рдХреЛ рд╕реАрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ - рдХреЛрдб рдХреЗ рдХрдИ рдЕрдиреБрднрд╛рдЧ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрднрд╛рдЧ рд╣реИрдВ рдФрд░ рддрд╛рд▓реЗ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╣реБрдП рд╣реИрдВред
рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд╛рдЗрдк рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдЗрдкрд░реАрдбрд░ рдФрд░ рдкрд╛рдЗрдкрд╡рд┐рдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рд░рд▓ рдЖрд░рдВрднреАрдХрд░рдгvar pipe = new Pipe(); PipeWriter pipeWriter = pipe.Writer; PipeReader pipeReader = pipe.Reader;
рдкрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рдкрд╛рдЗрдкрд╡рд░реНрдЯрд░ рдХреЗ рд╕рд╛рде рд▓реЗрдЦрди - рд░рд╛рдЗрдЯрдПрд╕реНрдкреНрдпреВрдВрд╕, рдЧреЗрдЯрдореЗрд░реА / рдЧреЗрдЯрд╕реНрдкреИрди, рдПрдбрд╡рд╛рдВрд╕, рдлреНрд▓рд╢рдПрд╕реНрдХреНрдпреВ, рдХрдореНрдкреНрд▓реАрдЯ, рдХреИрдВрд╕рд▓рд┐рдВрдЧрдлреНрд▓рд╢, рдСрдирд░реЗрдбрд░рдкреНрд▓реЗрдХреНрдЯреЗрдбред
рдкрд╛рдЗрдкрд░рд╛рдЗрдбрд░ рдХреЗ рд╕рд╛рде рдкрдврд╝рдирд╛ - рдПрдбрд╡рд╛рдВрд╕рдЯреИрдЯреЛ, рд░реАрдбрд╛рд╕рд┐рдВрдХ, рдЯреНрд░рд╛рдЗ рд░реАрдб, рдХрдореНрдкреНрд▓реАрдЯ, рдХреИрдВрдкреЗрдирд┐рдВрдЧ, рд░реАрдбрд┐рдВрдЧ, рдСрдирд░рд╛рдЗрдЯрд░рдХрдВрдкреНрд▓реАрдЯред
рдЬреИрд╕рд╛ рдХрд┐
рдЙрд▓реНрд▓реЗрдЦ рдкреЛрд╕реНрдЯ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд░реНрдЧ рдмрдлрд╝рд░реНрд╕ рдХреА рдПрдХ рдПрдХрд▓ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╡реЗ рдкрд╛рдЗрдкрд░рд╛рдЗрдбрд░ рдФрд░ рдкрд╛рдЗрдкрд╡рд┐рдЯрд░ рдХреЗ рдмреАрдЪ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ - рд╕рднреА рддрд░реНрдХ рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рд╣реИрдВред рдЗрд╕ рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓реМрдЯрд╛ рдбреЗрдЯрд╛ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ)ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреА рд╢реБрд░реБрдЖрдд (рд░реАрдбрд╣реЗрдб рдФрд░ рдЗрдВрдбреЗрдХреНрд╕), рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХрд╛ рдЕрдВрдд (рд░реАрдбрдЯреЗрд▓ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕) рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреА рд╢реБрд░реБрдЖрдд (рд░рд╛рдЗрдЯрд╣реЗрдб рдФрд░ рд▓рд┐рдЦрд┐рдд рдмрдлрд╝рд░ рдХреА рд╕рдВрдЦреНрдпрд╛) рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВред рдпрд╣рд╛рдВ рд░реАрдбрд╣реЗрдб, рд░реАрдбрдЯреЗрд▓ рдФрд░ рд░рд╛рдЗрдЯрд╣реЗрдб рдЦрдВрдбреЛрдВ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реВрдЪреА рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рджрд╕реНрдп (рдЦрдВрдб) рд╣реИрдВ, рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдЦрдВрдб рдХреЗ рднреАрддрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдПрдХ рдЦрдВрдб рдХреЗ рдордзреНрдп рд╕реЗ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдПрдХ рдкреВрд░реЗ рдЕрдЧрд▓реЗ рдЦрдВрдб рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░ рддреАрд╕рд░реЗ рдХреЗ рдмреАрдЪ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрди рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд╛рдЗрдкрд╡рд┐рдЯрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдпрд╣ рдЖрдХрд░реНрд╖рдХ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреБрдХреНрдд рдФрд░ рдлреИрд╢рдиреЗрдмрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИ - рд░реАрдбрдСрдирд▓реАрдореЛрд░реА, рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдХрдИ рдХреЛ рд▓реБрднрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдХрд┐ рд╕реНрдкреИрди рдФрд░ рдореЗрдореЛрд░реА рдЗрддрдиреА рддреЗрдЬ рдФрд░ рд╢рд╛рдВрдд рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЪрд╛рдкрд▓реВрд╕реА рдордд рдХрд░реЛред рдпрд╣ рд╕рдм рд╡рд┐рдзрд┐ рдЬреЛ рдХрд░рддреА рд╣реИ рд╡рд╣ рдЖрдВрддрд░рд┐рдХ рд╕реВрдЪреА рдореЗрдВ ReadOnlyMemory рдХреЛ рдХреЙрдкреА рдХрд░ рд░рд╣реА рд╣реИред рдФрд░ "рдХреЙрдкреА" рд╕реЗ рддрд╛рддреНрдкрд░реНрдп CopyTo () рд╡рд┐рдзрд┐ рд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреЙрдкреА рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рд╕рднреА рдбреЗрдЯрд╛ рдЬрд┐рд╕реЗ рд╣рдо рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдореЗрдореЛрд░реА рд▓реЛрдб рд╣реЛ рд░рд╣реА рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХреЗрд╡рд▓ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЦреИрд░, рдФрд░ рд╢рд╛рдпрдж рдХреБрдЫ рджреБрд░реНрд▓рдн рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЙрдЪрд┐рдд рд╣реИред
рд╡рд┐рдзрд┐ рдХрд╛ рд╢рд░реАрд░ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрдВрдб рд╣реИ, рдЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдПрдХ рдореЙрдирд┐рдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХреА рдЬрд╛рддреА рд╣реИред
рдлрд┐рд░ рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдХреБрдЫ рд▓рд┐рдЦреЗрдВ, рдЕрдЧрд░ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдХреЗрд╡рд▓ рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ
рд╡рд┐рдзрд┐ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд▓реЗрддреА рд╣реИред рдЗрд╕рдореЗрдВ, рд╣рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдкрд╛рдЗрдк рд▓рд╛рдЗрди рдХреЛ рдХрд┐рддрдиреЗ рдмрд╛рдЗрдЯреНрд╕ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд╣рдо рдЬреЛ рдмрдлрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕рдХрд╛ рдЖрдХрд╛рд░)ред рдпрд╣ рд╡рд┐рдзрд┐ рдЬрд╛рдВрдЪрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд░рд╛рдЗрдЯрд┐рдВрдЧрд╣реЗрдбрдореЗрдбреЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╡рд░реНрддрдорд╛рди рдореЗрдореЛрд░реА рдлреНрд░реЗрдЧреНрдореЗрдВрдЯ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЧрд╣ рд╣реИред рдпрджрд┐ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ, рддреЛ _writingHeadMemory рдХреЛ рдореЗрдореЛрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдмрдлрд╝рд░ рдХреЛ рд▓рд┐рдЦреЗ рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдлреНрд▓рд╢рдПрд╕реНрдХреНрдпреВ рд╡рд┐рдзрд┐ рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрдиреНрдп рдмрдлрд╝рд░рд╢рд┐рдк рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ (рдпрд╣рд╛рдВ рд╣рдорд╛рд░реА рдЖрдВрддрд░рд┐рдХ рд╕реВрдЪреА рд╣реИ)ред рдпрджрд┐ _ WritingHeadMemory рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдирдП рдмрдлрд╝рд░рд╢рд┐рдк рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдмрдлрд░ рдХрд╛ рдЖрд╡рдВрдЯрди рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрднрд╛рдЧ рд╣реИ рдФрд░ рд▓реЙрдХ рдХреЗ рддрд╣рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ (рдпрд╛ рд░рдирдЯрд╛рдЗрдо) рдиреЗ рджрд╛рдирд╡ рдХреЛ рдЖрдШрд╛рдд рдкрд╣реБрдБрдЪрд╛рдпрд╛ рд╣реИред
рджреНрд╡реЗрд╖ var pipeNoOptions = new Pipe(); Memory<byte> memoryOne = pipeNoOptions.Writer.GetMemory(2); Console.WriteLine(memoryOne.Length);
рд▓реЗрдХрд┐рди рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рд╕рд░рд▓ рд╣реИред
рдкрд╛рдЗрдк рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдо рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ
рдкрд╛рдЗрдкрдСрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╛рдЗрдк рдСрдпрд▓реНрд╕ рдореЗрдВ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреНрдпреВрдирддрдо рдЦрдВрдб рдЖрдХрд╛рд░ рдХреНрд╖реЗрддреНрд░ рд╣реИред рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдпрд╣ 2048 рдерд╛, рд▓реЗрдХрд┐рди
рдЗрд╕ рдХрдорд┐рдЯ рдиреЗ рдЗрд╕ рдореВрд▓реНрдп рдХреЛ 4096 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдордп, 4096 рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░реАрд▓реАрдЬ рдирдЧреЗрдЯ-рдкреИрдХреЗрдЬ рдореЗрдВ рдерд╛, рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдореВрд▓реНрдп 2048 рдерд╛ред рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ред рдпрджрд┐ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдлрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдкрд╛рдЗрдкрдСрдкреНрд╢рди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЬрд╣рд╛рдВ рдиреНрдпреВрдирддрдо рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓рдВрдмрд╛рдИ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рд╣реИред рдФрд░ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдП рдмрдлрд╝рд░рд╢рд┐рдк рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИред рдкрд╛рдЗрдк рдСрдкреНрд╢рди рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдореЗрдореЛрд░реА рдкреВрд▓ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рдирдпрд╛ рдЦрдВрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдкрдиреЗ рдореЗрдореЛрд░реА рдкреВрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрд░реЗрдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдмрд╛рд▓реНрдЯреА рд╣реИрдВ (рдкреНрд░рддреНрдпреЗрдХ рдЕрдЧрд▓реЗ рдПрдХ рдкрд┐рдЫрд▓реЗ 2 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 2 рдЧреБрдирд╛ рдмрдбрд╝рд╛ рд╣реИ) рдФрд░ рдЬрдм рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЖрдХрд╛рд░, рдпрд╣ рдЙрдкрдпреБрдХреНрдд рдЖрдХрд╛рд░ (рдпрд╛рдиреА, рдирд┐рдХрдЯрддрдо рдмрдбрд╝рд╛ рдпрд╛ рдмрд░рд╛рдмрд░) рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд▓реНрдЯреА рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдирдпрд╛ рдмрдлрд╝рд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдзрд┐рдд рд╕реЗ рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд░рдгреА рд╕рд░рдгреА рдореЗрдВ рдиреНрдпреВрдирддрдо рд╕рд░рдгреА рдЖрдХрд╛рд░ (System.Buffers.TlsOverPerCoreLockedStacksArrayPool) 16 рд╣реИред рд▓реЗрдХрд┐рди рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рдпрд╣ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдкреВрд▓ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕рд░рдгреА рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╛рд╣рдХ рдкрд░ рджрдмрд╛рд╡ рдирд╣реАрдВ рдбрд╛рд▓рддреА рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕реНрдкреИрди рдХреЛ рдореЗрдореЛрд░реА рд╕реЗ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ GetMemory () рдпрд╛ GetSpan () рд▓реЗрдЦрди рдХреА рдореБрдЦреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВред рд╡реЗ рд╣рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдирдП рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рд╕реАрдзреЗ рдкрд╛рдЗрдк рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЬреЛ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рдПрдкреАрдЖрдИ рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡рд┐рдзрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдкрд░реЛрдХреНрдд рдХреЗ рдорджреНрджреЗрдирдЬрд░, рдПрдХ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИред рдкрд╛рдардХ рдХреЛ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рд╣рдордиреЗ рдХрд┐рддрдирд╛ рд▓рд┐рдЦрд╛ рд╣реИ? рдпрджрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рдкреВрд▓ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рдорд╛рди рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ, рддреЛ рдкрд╛рдардХ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдкреВрд░реЗ рдмрдлрд░ рдХреЛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ, рд╣рдореЗрдВ рдПрдХ рдмрдбрд╝реЗ рдЖрдХрд╛рд░ рдХреА рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдлрд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд┐рдореНрди рд╡рд┐рдзрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╡рд┐рдзрд┐ред рдпрд╣ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реЗрддрд╛ рд╣реИред рд╡реЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ - _unflushedBytes рдФрд░ _writingHeadBytesBuffered, рдЬрд┐рдирдХреЗ рдирд╛рдо рд╕реНрд╡рдпрдВ рдмреЛрд▓рддреЗ рд╣реИрдВред рдпрд╣ рднреА (рд╕реНрд▓рд╛рдЗрд╕) _writingHeadMemory рдХреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ (рд╕реНрд▓рд╛рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдпрд╛ рд╕реНрдкреИрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирдП рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдк рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗред рдФрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдкреВрд░рд╛ рд╢рд░реАрд░ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрдВрдб рд╣реИ рдФрд░ рдПрдХ рддрд╛рд▓рд╛ рдХреЗ рдиреАрдЪреЗ рдЪрд▓рддрд╛ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рдж рдкрд╛рдардХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдХрджрдо рдХреА рдЬрд░реВрд░рдд рд╣реИред
рдкреНрд░рд╛рдкреНрдд рдореЗрдореЛрд░реА (рдЧреЗрдЯрдореЗрдореЛрд░реА) рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╡рд╣рд╛рдВ рдХрд┐рддрдирд╛ рд▓рд┐рдЦрд╛ (рдПрдбрд╡рд╛рдВрд╕)ред рдпрд╣ рдорд╛рди ValueTask рджреЗрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ (рдЗрд╕рдХреЗ рд╡рдВрд╢рдЬ рд╕реНрдЯреНрд░реАрдордкрд╛рдЗрдЯрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд) рдирд╣реАрдВ рд╣реИред ValueTask рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ (рд░реАрдбрдСрдирд▓реА рд╕реНрдЯреНрд░рдХреНрдЪрд░) рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЙрд▓ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдирд╣реАрдВ рд╣реЛрдВрдЧреА, рдЕрд░реНрдерд╛рдд рдЗрд╕рдХреЗ рдХреЙрд▓ рдХреЗ рд╕рдордп рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ рдФрд░ рд╡рд┐рдзрд┐ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рд╣реЛ рдЬрд╛рдПрдЧреАред рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдпрд╣ рдпрд╛ рддреЛ рдбреЗрдЯрд╛ рдпрд╛ рдХрд╛рд░реНрдп рд╕рдорд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдпрд╣ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдпрд╣ _writerAwaitable.IsCompleted property рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕ _writerAwaitable рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреНрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЙрдкрднреЛрдЧ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ (рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЬрд╛рдВрдЪреЗ рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛) рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ (_wauseWriterThreshold)ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 16 рдЦрдВрдб рдЖрдХрд╛рд░ рд╣реИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдорд╛рди рдХреЛ рдкрд╛рдЗрдк рдСрдХреНрд╢рди рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╡рд┐рдзрд┐ ReadAsync рд╡рд┐рдзрд┐ рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рд╢реБрд░реВ рдХрд░рддреА рд╣реИ, рдЕрдЧрд░ рдХреЛрдИ рдЕрд╡рд░реБрджреНрдз рдерд╛ред
рдПрдХ FlushResult рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ 2 рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ - IsCanceled рдФрд░ IsCompletedред IsCanceled рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдлрд╝реНрд▓рд╢ рдХреЛ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд░рджреНрдж рдХрд░реЗрдВ рд▓рдВрдмрд┐рдд () рдХреЙрд▓)ред IsCompleted рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ pipReader рдкреВрд░рд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ (рдкреВрд░реНрдг рдХреЙрд▓ рдХрд░рдХреЗ) рдпрд╛ рдХрдореНрдкрд▓реАрдЯрд╛рд╕рд┐рдВрдХреНрд╕ () рд╡рд┐рдзрд┐рдпреЛрдВ)ред
рд╡рд┐рдзрд┐ рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рд▓реЙрдХ рдХреЗ рддрд╣рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд╛рдЗрдкрд╡рд░реНрдЯрд░ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЕрдХреНрд╕рд░ рдмрд╣реБрдд рдХрдо рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
# 5 рд╢реВрдиреНрдп рдкреВрд░реНрдг (рдЕрдкрд╡рд╛рдж рдЕрдкрд╡рд╛рдж = рдЕрд╢рдХреНрдд) рдпрд╛ рд╡реИрд▓реНрдпреВрдЯреИрд╕реНрдХ рдХрдореНрдкреНрд▓реАрдЯреИрдиреНрд╕рд┐рдВрдХ (рдЕрдкрд╡рд╛рдж рдЕрдкрд╡рд╛рдж = рдЕрд╢рдХреНрдд)
рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХреНрд╕ рдкрд╛рдЗрдк рдмрдВрдж рд╣реЛ рдЧрдПред рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдкрд╛рдЗрдкрд░рд╛рдЗрдбрд░ рдкрд╣рд▓реЗ рд╣реА рдкреВрд░рд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ, рддреЛ рдкрд╛рдЗрдк рдХрд╛ рдкреВрд░рд╛ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рднреА рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдХрд╛рдо рддрд╛рд▓рд╛ рдХреЗ рдиреАрдЪреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
# 6 рд╢реВрдиреНрдп рд░рджреНрдж рдХрд░реЗрдВ рд▓рдВрдмрд┐рдд ()
рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдпрд╣ рд╡рд░реНрддрдорд╛рди рдлреНрд▓реБрд╢рд╕рдВрдХ () рдСрдкрд░реЗрд╢рди рдХреЛ рд░рджреНрдж рдХрд░рддрд╛ рд╣реИред рдПрдХ рддрд╛рд▓рд╛ рд╣реИред
# 7 рд╢реВрдиреНрдп OnReaderCompleted (рдХреНрд░рд┐рдпрд╛ <рдЕрдкрд╡рд╛рдж, рдСрдмреНрдЬреЗрдХреНрдЯ> рдХреЙрд▓рдмреИрдХ, рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдерд┐рддрд┐)
рдкрд╛рдардХ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдкрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рддрд╛рд▓рд╛ рднреА рд╣реИред
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХреБрдЫ рдкрд╛рдЗрдкрд╡рд░реНрдЯрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрди рддрд░реАрдХреЛрдВ рд╕реЗ рддрд░реНрдХ рдирд╣реАрдВ рдмрд╛рдБрдзрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдкрд╛рдЗрдкрд░реАрдбрд░ рдХрд╛ рд╕рдордп рд╣реИ
рдпрд╣рд╛рдВ, рдлреНрд▓рд╢рдПрд╕реНрдХреНрдпреВрдПрди () рдХреА рддрд░рд╣, рд╡реИрд▓реНрдпреВрд╕реИрд╕реНрдХ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдирд╣реАрдВред _ReaderAwaitable рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред FlushAsync рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдпрд╣ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ _readerAwaitable рдЕрдзреВрд░рд╛ рдкрд░ рд╕реЗрдЯ рд╣реИред рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкрд╛рдЗрдкрд░реАрдбрд░ рдиреЗ рдЖрдВрддрд░рд┐рдХ рд╕реВрдЪреА рд╕реЗ рд╕рдм рдХреБрдЫ рдкрдврд╝рд╛ рд╣реИ (рдпрд╛ рдЗрд╕рдореЗрдВ рд╡рд╣ рдбреЗрдЯрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЬрд╛рдВрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЖрдкрдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рдЬреЛ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реНрдкрд╖реНрдЯ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреБрднрд╡рдЬрдиреНрдп рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдиреЗ рдЧрдП рдЖрдБрдХрдбрд╝реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдареАрдХ рд╕реЗ рдЯреНрдпреВрди рдХрд░рдирд╛ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ, рдЗрд╕рдХреЗ рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╕реЛрдЪ-рд╕рдордЭрдХрд░ рд╕реЗрдЯ рдХрд░рдирд╛ред рдЙрдЪрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рд╢рд╛рдЦрд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░реЗрдЧрд╛ рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдкреВрд░реА рд╡рд┐рдзрд┐ рдореЗрдВ рд▓рдЧрднрдЧ рд╕рднреА рдХреЛрдб рдПрдХ рд▓реЙрдХ рд╕реЗ рдШрд┐рд░рд╛ рд╣реБрдЖ рд╣реИред
рд░рд┐рдЯрд░реНрди рдХреБрдЫ рд░рд╣рд╕реНрдпрдордп
ReadResult ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдСрдкрд░реЗрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рд╕рд┐рд░реНрдл рдПрдХ рдмрдлрд░ + рдЭрдВрдбреЗ рд╣реИ (Iscanceled - рдХреНрдпрд╛ ReadAsync рдХреЛ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХреНрдпрд╛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрд╛рдЗрдкрд╡рд░реНрдЯрд░ рдмрдВрдж рдерд╛)ред IsCompleted рдПрдХ рдРрд╕рд╛ рдорд╛рди рд╣реИ рдЬреЛ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрд╛рдЗрдкрд╡рд░реНрдЯрд░ рдХрдореНрдкреНрд▓реАрдЯ () рдпрд╛ рдХрдореНрдкреИрд░реЗрд╕рд┐рдВрдХреНрд╕ () рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдкрд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдФрд░ рдлрд┐рд░, рдмрдлрд░ рдореЗрдВ рдПрдХ рд░рд╣рд╕реНрдпрдордп рдкреНрд░рдХрд╛рд░ рд╣реИ -
ReadOnlySequence ред рдпрд╣, рдмрджрд▓реЗ рдореЗрдВ, рдЦрдВрдбреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА
(ReadOnlySequenceSegment) рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБ рд╣реИ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЦрдВрдбреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЕрдВрдд + рдкреНрд░рд╛рд░рдВрдн рдФрд░ рдЕрдВрдд рдЕрдиреБрдХреНрд░рдорд┐рдд рд╣реИред рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрд╡рдпрдВ рдкрд╛рдЗрдк рдХреНрд▓рд╛рд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдмрдлрд╝рд░рд╢рд┐рдк рдХреЛ ReadOnlySequenceSegment рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдЬреЛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдмрдлрд╝рд░рд╢рд┐рдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕реА рдХреНрд░рдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рд▓реЗрдЦрдХ рд╕реЗ рдкрд╛рдардХ рддрдХ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдЧреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП ReadOnlySpan рдХреЛ рдмрдлрд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрд╕реНрд╡реАрд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдмрдлрд░ рдореЗрдВ рдПрдХрд▓ ReadOnlySpan рд╣реИред рдпрджрд┐ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдПрдХ рддрддреНрд╡ рд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕реЗ рдкрд╣рд▓реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдмрдлрд░ рдореЗрдВ рд╕рднреА рдЦрдВрдбреЛрдВ рдкрд░ рдЬрд╛рдирд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ ReadOnlySpan рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЪрд░реНрдЪрд╛ рдХрд╛ рд╡рд┐рд╖рдп - ReadOnlySequence рд╡рд░реНрдЧ рдореЗрдВ, рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдЧреЛрдЯреЛ (рдЧрд╣рд░реЗ рд▓реВрдк рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдФрд░ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдореЗрдВ рдирд╣реАрдВ) - рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ,
рдпрд╣рд╛рдВ ред
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЙрд╕ рдкрд╛рдЗрдк рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдбреЗрдЯрд╛ рдкрдврд╝рддреЗ рд╣реИрдВред
рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрд╕реНрдХрд░рдгред рдпрджрд┐ рдпрд╣ рдореМрдЬреВрдж рд╣реИ рддреЛ рдЖрдкрдХреЛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, ReadAsync рдХреЗ рд╡рд┐рдкрд░реАрдд рдпрд╣ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЧрд▓рдд рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдХреЛрдб рд▓реЙрдХ рдореЗрдВ рд╣реИред
рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ, рдЖрдк рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХрд┐рддрдиреЗ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдФрд░ рдЙрдкрднреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬрд┐рд╕ рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЧрдИ рд╣реИ рд▓реЗрдХрд┐рди рдЙрд╕рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрд╕реЗ рдЕрдЧрд▓реА рдмрд╛рд░ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рдзрд╛рд░рд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЗрдЯ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдкрдврд╝рдиреЗ рдХреЗ рджреМрд░рд╛рди рдкрд╛рдардХ рдХреЛ рдПрдХ рдкреВрд░рд╛ рд╕рдВрджреЗрд╢ рдорд┐рд▓реЗ рдФрд░ рджреВрд╕рд░рд╛ рднрд╛рдЧред рдкреВрд░реЗ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рджреВрд╕рд░реЗ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдпрд╣ рд╢реЗрд╖ рднрд╛рдЧ рдХреЗ рд╕рд╛рде рдЖрдПред AdvanceTo рд╡рд┐рдзрд┐ рдПрдХ SequencePosition рд▓реЗрддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЦрдВрдб + рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИред ReadAsync рдиреЗ рдЬреЛ рдХреБрдЫ рднреА рдкрдврд╝рд╛ рд╣реИ, рдЙрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдмрдлрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ред рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдерд┐рддрд┐ рдмрдирд╛рдиреА рд╣реЛрдЧреА, рдЬреЛ рдЙрд╕ рдЦрдВрдб рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИ рдЬрд┐рд╕ рдкрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд░реЛрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рддрд╛рд▓рд╛ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЙрдкрднреЛрдЧ рдХреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдорд╛рддреНрд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реАрдорд╛ (_resumeWriterThreshold) рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЕрд╡рд░реБрджреНрдз рд╣реЛрдиреЗ рдкрд░ рдкрд╛рдЗрдкрд╡рд┐рдЯрд░ рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рджрд╣рд▓реАрдЬ 8 рдЦрдВрдб рдЦрдВрдб (рдЖрдзрд╛ рдЕрд╡рд░реБрджреНрдз рджрд╣рд▓реАрдЬ) рд╣реИред
# 4 рд╢реВрдиреНрдп рдкреВрд░реНрдг (рдЕрдкрд╡рд╛рдж рдЕрдкрд╡рд╛рдж = рдЕрд╢рдХреНрдд)
рдкрд╛рдЗрдкрд░реАрдбрд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкрд╛рдЗрдкрд╡рд┐рдЯрд░ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреВрд░рд╛ рдкрд╛рдЗрдк рдЙрджрд╛рд╣рд░рдг рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрджрд░ рд╕реЗ рддрд╛рд▓рд╛ред
# 5 рд╢реВрдиреНрдп рд░рджреНрдж рдХрд░реЗрдВ рд▓рдВрдмрд┐рдд ()
рдЖрдкрдХреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓рдВрдмрд┐рдд рдкрдарди рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рддрд╛рд▓рд╛ред
# 6 рд╢реВрдиреНрдп OnWriterCompleted (рдХреНрд░рд┐рдпрд╛ <рдЕрдкрд╡рд╛рдж, рдСрдмреНрдЬреЗрдХреНрдЯ> рдХреЙрд▓рдмреИрдХ, рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдерд┐рддрд┐)
рдЖрдкрдХреЛ рдкрд╛рдЗрдкрд╡рд░реНрдЯрд░ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдкрд╛рдЗрдкрд╡рд░реНрдЯрд░ рдХреЗ рд╕рдорд╛рди рддрд░реАрдХреЗ рдХреА рддрд░рд╣,
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рднреА рд╡рд╣реА рдЯреИрдЧ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддрд╛рд▓рд╛ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рд╣реИред
рдЙрджрд╛рд╣рд░рдг
рдиреАрдЪреЗ рджреА рдЧрдИ рд╕реВрдЪреА рдкрд╛рдЗрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддреА рд╣реИред
.NET рдХреЛрд░ рд╕реНрдкреИрди рдФрд░ рдореЗрдореЛрд░реА рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж рд╕реЗ, рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдУрд╡рд░рд▓реЛрдб рджреНрд╡рд╛рд░рд╛ рдкреВрд░рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддреЛ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╕реНрдХреАрдо рд▓рдЧрднрдЧ рдПрдХ рд╣реА рд╣реЛрдЧреАред рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╛рдЗрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ (рдореБрдЭреЗ рд╕рдорд╛рди рд╢рдмреНрдж рдкрд╕рдВрдж рд╣реИрдВ) - рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдУрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯред рд╕реНрдкреИрди рдФрд░ рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдк рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡рд┐рдзрд┐ рдПрдХ рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯ рдкрд░рд┐рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧреА, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдФрд░ рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЪреВрдВрдХрд┐ рд╕реНрдкреИрди рд░реЗрдлреЙрдирд▓реА рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЕрдВрджрд░ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдвреЗрд░, рдХреНрд░рдорд╢рдГ, рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реНрдкреИрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рднреА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕реНрдкреИрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВрдиреЗ рджреЛрдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрд╕реНрдХрд░рдг рдЦреБрдж рдХреЛ рдмреЗрд╣рддрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдХрдо рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рддреЗрдЬ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рдЗрдк рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдерд╛ (рдбреЗрдЯрд╛ рд╣рдореЗрд╢рд╛ рдЙрдкрд▓рдмреНрдз рдерд╛)ред рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рдмреИрдЪ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЖрдкрдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдмреЗрдХрд╛рд░ рди рд╣реЛред
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдРрд╕реА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддреА рд╣реИрдВред рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкрд╛рдЗрдк рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЯреБрдХрдбрд╝реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрдм рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛ рдЙрд╕ рдЬрдЧрд╣ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕реЗ рдкрдврд╝рдиреЗ рдкрд░ рдпрд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рдЗрдкред
рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд░реНрд╖ - рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореБрдЦреНрдп class Program { static async Task Main(string args) { var pipe = new Pipe(); var dataWriter = new PipeDataWriter(pipe.Writer, "testpipe"); var dataProcessor = new DataProcessor(new ConsoleBytesProcessor(), pipe.Reader); var cts = new CancellationTokenSource(); await Task.WhenAll(dataWriter.ReadFromPipeAsync(cts.Token), dataProcessor.StartProcessingDataAsync(cts.Token)); } }
PipeDataWriter public class PipeDataWriter { private readonly NamedPipeClientStream _namedPipe; private readonly PipeWriter _pipeWriter; private const string Servername = "."; public PipeDataWriter(PipeWriter pipeWriter, string pipeName) { _pipeWriter = pipeWriter ?? throw new ArgumentNullException(nameof(pipeWriter)); _namedPipe = new NamedPipeClientStream(Servername, pipeName, PipeDirection.In); } public async Task ReadFromPipeAsync(CancellationToken token) { await _namedPipe.ConnectAsync(token); while (true) { token.ThrowIfCancellationRequested();
DataProcessor public class DataProcessor { private readonly IBytesProcessor _bytesProcessor; private readonly PipeReader _pipeReader; public DataProcessor(IBytesProcessor bytesProcessor, PipeReader pipeReader) { _bytesProcessor = bytesProcessor ?? throw new ArgumentNullException(nameof(bytesProcessor)); _pipeReader = pipeReader ?? throw new ArgumentNullException(nameof(pipeReader)); } public async Task StartProcessingDataAsync(CancellationToken token) { while (true) { token.ThrowIfCancellationRequested();
BytesProcessor public interface IBytesProcessor { Task ProcessBytesAsync(ReadOnlySequence<byte> bytesSequence, CancellationToken token); } public class ConsoleBytesProcessor : IBytesProcessor {