C # рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕рдорд╛рдирд╛рдВрддрд░рдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛



рд╕рдмрдХреЗ рд▓рд┐рдП рджрд┐рди рдЕрдЪреНрдЫрд╛ рд╣реЛ! рдореИрдВ рдЖрдВрддрд░рд┐рдХ рдСрдбрд┐рдЯ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рддрдХрдиреАрдХреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реВрдВ, рдореЗрд░реА рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдореЗрдВ C # рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ ETL рдЯреВрд▓ рдмрдирд╛рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред

рд╕рдордп-рд╕рдордп рдкрд░, рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХрд╕рдХрд░ рд╕рдВрд░рдЪрд┐рдд рдлрд╛рдЗрд▓реЗрдВ xml, csv, json, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реЛрддреА рд╣реИрдВред рдХрднреА-рдХрднреА рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛рдлреА рдмрдбрд╝реА рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝рддреА рдЬрд╛ рд░рд╣реА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдПрдХ рдХрд╛рд░реНрдп рдореЗрдВ, рдкреНрд░рддрд┐рджрд┐рди рд▓рдЧрднрдЧ 150,000 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдФрд╕рдд рддрд╛рдЬрд╝рд╛ рджрд░ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реБрдИред рдпрджрд┐ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ (рд╣рд╛рд░реНрдб рдбрд┐рд╕реНрдХ рд╕реЗ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдкрдврд╝рдирд╛, рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦрдирд╛) рдПрдХ рд╕реЗрдХрдВрдб рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ 40 рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдВрдд рддрдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рдиреЗ рдХреА рдЧрддрд┐ рдЙрдирдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЧрддрд┐ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдЧреАред

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

рдЗрди рдХрдард┐рдирд╛рдЗрдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, Microsoft рдиреЗ TPL рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ .Net рдлреНрд░реЗрдорд╡рд░реНрдХ (рд╕рдВрд╕реНрдХрд░рдг 4.0 рд╕реЗ рд╢реБрд░реВ) рдореЗрдВ рдЬреЛрдбрд╝рд╛ред рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред

рдЗрд╕рд▓рд┐рдП, рд╢реБрд░реВ рдореЗрдВ рдСрдкрд░реЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ: рдПрдХ

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

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рд╕рдВрдЪрд╛рд▓рди рд╣рд╛рд░реНрдб рдбрд┐рд╕реНрдХ рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдкрдврд╝ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдбреЗрдЯрд╛ рд▓рд┐рдЦ тАЛтАЛрд░рд╣рд╛ рд╣реИред

рдЖрдЗрдП TPL рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

рдЪрд░рдг 1ред

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

рдмрд┐рдВрджреБ 2:
рдПрдХ рдлрд╛рдЗрд▓ рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдбрд╛рдЯрд╛ рдХрд╛ рдПрдХ рдЪрдХреНрд░ рдмрдирд╛рддреЗ рд╣реБрдП рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред Parallel.For рдпрд╛ Parallel.ForEach рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВред

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

Parallel.ForEach(listFiles, (currentFile) =>
       	  {
              	var dataFile = getDataFile(currentFile.FullName);
		TransformData(dataFile);
		WriteToDB(dataFile);
               });

рдЬрд╣рд╛рдБ:

listFiles рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╡рд╛рд▓реЗ рд╕рдорд╡рд░реНрддреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ;
currentFile - listFiles рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдПрдХ рддрддреНрд╡, рдЬрд┐рд╕реЗ рдлреЙрд░рдПрдЪ рдирд┐рд░реНрдорд╛рдг рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ;
dataFile - рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рд╕рд╢рд░реНрдд рдХреБрдЫ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛, рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдкрдврд╝рдХрд░ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ;
getDataFile - рдПрдХ рд╕рд╢рд░реНрдд рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдХреБрдЫ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рд▓реМрдЯрд╛рддрд╛ рд╣реИ;
рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдордбрд╛рдЯрд╛ - рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╢рд░реНрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛;
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП WriteToDB рдПрдХ рд╕рд╢рд░реНрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, Parallel.ForEach рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рд▓реВрдк рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдЪрдХреНрд░ рдореЗрдВ, рд╕рдорд╛рдирд╛рдВрддрд░ рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЛ рд╣рд╛рд░реНрдб рдбрд┐рд╕реНрдХ, рдЙрдирдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдХрд╛рдо рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд╕рдорд╛рдирд╛рдВрддрд░ рдзрд╛рдЧреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдФрд░ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрднрд╛рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдХрдо рд╕реЗ рдХрдо 2 рдмрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЧрддрд┐ рджреЗрдВрдЧреЗред рдпрджреНрдпрдкрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдЖрдВрдХрдбрд╝рд╛ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдорд╢реАрди рдХреА рдореЗрдореЛрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓реЗрдЧрд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдореБрдЦреНрдп рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрддрд╛рд░ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рд╕рдВрдШрд░реНрд╖реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╡рд░реНрддреА рдХрддрд╛рд░ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╣рдо рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдлрд╛рдЗрд▓ рд░реАрдбрд░ рд╣рдореЗрдВ DataTable рдореЗрдВ рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ):

Parallel.ForEach(listFiles, (currentFile) =>
       	  {
              	DataTable dataFile = getDataFile(currentFile.FullName);
		TransformData(dataFile);
		threadWriteToDB.ListData.Enqueue(dataFile);
               });

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд╛рдЗрди рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдмрд╕ рд╡рд░реНрдгрд┐рдд рд╕рдорд╡рд░реНрддреА queueData рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ рдФрд░ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдереНрд░реЗрдбрдЯреНрд░рд╛рдЗрдЯ рдЯреАрдУрдбреАрдмреА рд╣рдорд╛рд░реЗ рд▓реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрди Parallel.For рдФрд░ / рдпрд╛ Paral-lel.Foreach рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░реЗ рдХрд╛рд░реНрдп рдореЗрдВ, рдЬрд╣рд╛рдВ рдПрдХ рддреБрд▓рдиреАрдп рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЕрдм рдпрд╣ рдФрд╕рддрди рдкреНрд░рддрд┐ рджрд┐рди 200,000 рд╕реЗ 400,000 рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЧрддрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдбреЗрдЯрд╛ рдЪреИрдирд▓ рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЛ рд▓реЛрдб рдХрд░рдХреЗ рд╕реАрдорд┐рдд рд╣реИред

All Articles