
рдореИрдВ рдПрдХ рдЖрджрд░реНрд╢рд╡рд╛рджреА рд╣реВрдВред
рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рдж рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢рд╡рд╛рджреА рд╣реЛрдирд╛ рдХрдард┐рди рд╣реИ - рдХреЛрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрднреА рднреА рдмрдВрдж рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╣рдореЗрд╢рд╛, рдереЛрдбрд╝рд╛ рдмрд╛рдж рдореЗрдВ, рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдирд┐рд░рдВрддрд░ рдХреЛрдб рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкрд╛рд╕ рд╕реАрдорд┐рдд рд╕рдордп рд╣реИ, рддреЛ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд┐рд░рдВрддрд░ рд╕реБрдзрд╛рд░ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рд╕реЗ рд╕реАрдорд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдПрдХ рджреБрд╖реНрдЪрдХреНрд░ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди, рдЖрдЗрдП рджрд░реНрд╢рди рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рд╣рдореЗрд╢рд╛ рдЖрджрд░реНрд╢ рдХреА рдЖрдХрд╛рдВрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдорд╛рдВрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ DRY рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдирддреАрдЬрддрди, "рд░реИрдкрд░" рдЙрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджрд┐рдП, рдЬреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
DRY рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ
DRY - рдЕрдкрдиреЗ рдЖрдк рдХреЛ рджреЛрд╣рд░рд╛рдПрдВ рдирд╣реАрдВредрдпрд╣ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрдореВрд░реНрддрддрд╛ рдХреА рдХрдИ рдкрд░рддреЛрдВ рдХреЗ рд╕рд╛рдеред DRY рд╕рд┐рджреНрдзрд╛рдВрдд рдЗрд╕ рд░реВрдк рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: "рдЬреНрдЮрд╛рди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рднреАрддрд░ рдПрдХ рдПрдХрд▓, рд╕реБрд╕рдВрдЧрдд рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред"
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛
рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдкрд░реЗрд╢рди рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рджреВрд╕рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рджреЛрд╣рд░рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рдордп рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рд╣рд░ рдмрд╛рд░ рдПрдХ рд╣реА рдЪреАрдЬ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд╣реБрдХ, рдПрдХ рд╣реА рд╕рдВрджреЗрд╢, рдПрдХ рд╣реА рдХреЛрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдареЗрда рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрдЧрд╛ рдФрд░ рдмрд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо:
- рдирд┐рдпрдорд┐рдд рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдмрдЪреЗрдВ рдЬреЛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рдордп рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрддрд╛ рд╣реИ
- рдкрд┐рдЫрд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рджреЗрдЦреА рдФрд░ рдареАрдХ рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪреЗрдВ
- рд╣рдо рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЕрдореВрд░реНрддрддрд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╕рдорд░реНрдерди рдФрд░ рд╕рдордЭ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ
рдкреБрд╕реНрддрдХрд╛рд▓рдп
рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХрдИ рдРрд╕реА рдЙрдкрд▓рдмреНрдзрд┐рдпрд╛рдВ рд╣реИрдВред рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЬрд░реВрд░рддреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди 8 рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди 7.5 рдХреЗ рд▓рд┐рдП
рдЕрдкрдбреЗрдЯ , рдпреЗ рдЙрджрд╛рд╣рд░рдг рдЕрдм рдорд╣рд╛рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕реЗ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ
async / wait рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди DRY рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб
http://vb.codeplex.com рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ
рдЗрд╕рд▓рд┐рдП, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рджреЛ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ, рдПрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкрдврд╝рдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рджреВрд╕рд░реА рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЗ рдЕрдкрдиреЗ рддрд░реАрдХреЗ, рдЧреБрдг, рдШрдЯрдирд╛рдПрдБ, рдФрд░ рддреНрд░реБрдЯрд┐ рдлрдВрд╕рд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣реЛрддреЗ рд╣реИрдВред
рдЖрдЗрдП рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдХрдХреНрд╖рд╛ рднрд╛рд░рд╡рд╛рд╣рдХрдбрд┐рдЬрд╛рдЗрдирд░ |
LoadManager | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ LoadManager
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рдирдИ рдЖрд╡реГрддреНрддрд┐ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИред
|
рддрд░реАрдХреЛрдВ |
рднрд╛рд░ | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд▓реЛрдб (рд╕реНрдЯреНрд░рд┐рдВрдЧ url)
рдПрдХ рдирдпрд╛ WebClient рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ DownloadStringAsync рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
|
рдЧреБрдг |
рдПрдиреНрдХреЛрдбрд┐рдВрдЧ | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ int рдПрдиреНрдХреЛрдбрд┐рдВрдЧ
рдбреЗрдЯрд╛ рдкрдврд╝рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдорд╣рддреНрд╡рдкреВрд░реНрдг! рд╡рд┐рднрд┐рдиреНрди рдПрдирдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, MSPToolkit.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 1251 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
|
SaveTo | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ SaveTo
рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рд╕реЗ рдбреЗрдЯрд╛ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
|
рдШрдЯрдирд╛рдУрдВ |
OnCancel | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо System.Action OnCancel
рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рд░рджреНрдж рдХрд░рддреЗ рд╕рдордп рдЖрдЧ рд▓рдЧ рдЬрд╛рддреА рд╣реИред
|
OnError | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо System.Action <рдЕрдкрд╡рд╛рдж> OnError
рдбреЗрдЯрд╛ рд▓реЛрдб рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдЖрдЧ рд▓рдЧ рдЬрд╛рддреА рд╣реИред
|
OnFinish | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо System.Action OnFinish
рдпрд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЙрд╕рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрдВ рдпрд╛ рди рд╣реЛрдВред рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдкреНрд░рдЧрддрд┐ рдкрдЯреНрдЯреА рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
|
OnLoad | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо System.Action <string> OnLoad
рдЬрдм рдбреЗрдЯрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЛрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрддрд╛ рд╣реИред
|
Onno рдиреЗрдЯрд╡рд░реНрдХ | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо System.Action OnNoNetwork
рдиреЗрдЯрд╡рд░реНрдХ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдпрджрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрд╡рдпрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рд╣реИ, рддреЛ рдСрдирдПрдпрд░ рдХреА рдШрдЯрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдЧ рд▓рдЧ рдЬрд╛рдПрдЧреА, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рдХреА рдЕрдиреБрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реЛрдЧрд╛ред
|
OnProgress | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдШрдЯрдирд╛ System.Action <DownloadProgressChangedEventArgs> OnProgress
рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЬрдм рдкреНрд░рдЧрддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред
|
onStart | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо System.Action рдСрдирд╕реНрдЯрд╛рд░реНрдЯ
рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдЧрддрд┐ рдмрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
|
рдХреНрд▓рд╛рд╕ рдХрд╛ рдлрд┐рд▓реНрдорд╛рд╕реНрдЯрд░рдбрд┐рдЬрд╛рдЗрдирд░ |
FileManager | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ FileManager
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рдирдИ рдЖрд╡реГрддреНрддрд┐ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИред
|
рддрд░реАрдХреЛрдВ |
рдкрдврд╝реЗрдВ | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдкрдврд╝реЗрдВ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо)
рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
|
рд╕рд╣реЗрдЬреЗрдВ | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╕рд╣реЗрдЬреЗрдВ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛)
рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддрд╛ рд╣реИ рдпрд╛ рдПрдХ рдирдпрд╛ рдмрдирд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдЧрд╛рдпрдм рд╣реИред
|
рдЧреБрдг |
WriteAfter | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ WriteAfter
рдбреЗрдЯрд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧред рдПрдХреНрд╕рдПрдордПрд▓ рд╣рдореЗрд╢рд╛ рдПрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреНрд░рдордмрджреНрдз рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрднреА-рдХрднреА рд░реВрдЯ рдиреЛрдб рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдврдВрдЧ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдЯ рдиреЛрдб рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рд╣реИред
|
WriteBefore | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ WriteBefore
рдбреЗрдЯрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ (WriteAfter рдХреЗ рд╕рдорд╛рди)ред
|
рдШрдЯрдирд╛рдУрдВ |
OnReadError | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо System.Action <рдЕрдкрд╡рд╛рдж> OnReadError
рдлрд╝рд╛рдЗрд▓ рд░реАрдб рдПрд░рд░ рд╣реЛрдиреЗ рдкрд░ рдЖрдЧ рд▓рдЧ рдЬрд╛рддреА рд╣реИред
|
OnReadFileMissing | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо System.Action OnReadFileMissing
рдпрд╣ рддрдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рд╡реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ OnReadError рдШрдЯрдирд╛ рдХреЛ рдЕрдм рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
|
OnReadReady | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо System.Action <StreamReader> OnReadReady
рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реИ рдЬрдм рдЖрдЧред рдПрдХ рдУрдкрди рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
|
OnSaveError | рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо System.Action <рдЕрдкрд╡рд╛рдж> OnSaveError
рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрдиреЗ рдХреА рддреНрд░реБрдЯрд┐ рдореЗрдВ рдЖрдЧред
|
рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг
LoadManager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
LoadManager DataLoader = new LoadManager(); DataLoader.OnLoad += new Action<string>(DataLoader_OnLoad); DataLoader.Load(resorce_url); void DataLoader_OnLoad(string data) { try { Deployment.Current.Dispatcher.BeginInvoke( delegate { // do something with data string }); } catch (Exception ex) { Deployment.Current.Dispatcher.BeginInvoke( delegate { MessageBox.Show(ex.Message, "Exception", MessageBoxButton.OK); }); } }
FileManager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
FileManager CacheFile = new FileManager(); CacheFile.OnReadReady += new Action<StreamReader>(File_OnReadOpen); CacheFile.Read(file_name); void File_OnReadOpen(StreamReader Stream) { // do something with file stream }
рдпрд╣ рдЬрдЯрд┐рд▓ рдФрд░ рд╡рд┐рд╢реЗрд╖ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛ред рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрддрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдХреЛрдб, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрд┐рдд рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ!
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдореБрджреНрд░рд╛ рджрд░ рдореБрдЦрдмрд┐рд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕рд░реНрд╡рд░ рд╕реЗ XML рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛ред рдХреЗрд╡рд▓ XML рдкрдврд╝рдирд╛ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддрд╛рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рдирд┐рдордп рджрд░ рдХреЛ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХреЗред рдмреЗрд╢рдХ, рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдПрдХ рдЦрд╛рд▓реА рд▓рд╛рдЗрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдирд╡реАрдирддрдо рдЕрджреНрдпрддрди рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдореИрдВ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб
http://exchangeexample.codeplex.com рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреВрдВрдЧрд╛ рдЬрд╣рд╛рдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рддреЛ рдЖрд░реЗрдЦ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рдЕрдЧрд░ рдпрд╣ рдореМрдЬреВрдж рд╣реИ рддреЛ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рдкрдврд╝реЗрдВ
- рдпрджрд┐ рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ, рддреЛ рдЕрджреНрдпрддрди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
- рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреИрд╢ рд╕рд╣реЗрдЬреЗрдВ
- рд╕реНрдХреНрд░реАрди рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝реЗрдВ
рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рдкрдврд╝реЗрдВ // public void LoadData() { // FileManager CacheFile = new FileManager(); // CacheFile.OnReadReady += new Action<StreamReader>(File_OnReadOpen); // , CacheFile.OnReadFileMissing += new Action(File_OnReadFileMissing); // CacheFile.Read(Common.Constants.ExchangeTmpFile); } // void File_OnReadFileMissing() { // Deployment.Current.Dispatcher.BeginInvoke( delegate { MessageBox.Show("Local file missing, first time application start?", "FileManager OnReadFileMissing exception", MessageBoxButton.OK); }); } // void File_OnReadOpen(StreamReader Stream) { using (XmlReader XmlReader = XmlReader.Create(Stream)) { // XML XmlSerializer DataSerializer = new XmlSerializer(typeof(RatesList)); _RatesList = (RatesList)DataSerializer.Deserialize(XmlReader); Rates = _RatesList.Collection; } }
рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рдЕрджреНрдпрддрди // public void UpdateData() { // LoadManager DataLoader = new LoadManager(); // DataLoader.OnNoNetwork += new Action(DataLoader_OnNoNetwork); // DataLoader.OnError += new Action<Exception>(DataLoader_OnError); // DataLoader.OnStart += new Action(DataLoader_OnStart); // DataLoader.OnLoad += new Action<string>(DataLoader_OnLoad); // DataLoader.OnFinish += new Action(DataLoader_OnFinish); // , XML // DataLoader.OnSaveTo += new Action<string>(DataLoader_OnSaveTo); // DataLoader.SaveTo = Common.Constants.ExchangeTmpFile; // DataLoader.Load(Common.Constants.ExchangeApiUrl); } // // // , as is void DataLoader_OnSaveTo(string data) { // FileManager CacheFile = new FileManager(); // ( ) CacheFile.WriteBefore = "<Root>"; // ( ) CacheFile.WriteAfter = "</Root>"; // , CacheFile.Save(Common.Constants.ExchangeTmpFile, data); } // void DataLoader_OnNoNetwork() { Deployment.Current.Dispatcher.BeginInvoke( delegate { MessageBox.Show("No network available.", "LoadManager OnNoNetwork exception", MessageBoxButton.OK); }); } // void DataLoader_OnError(Exception e) { Deployment.Current.Dispatcher.BeginInvoke( delegate { MessageBox.Show(e.Message, "LoadManager OnError exception", MessageBoxButton.OK); }); } // void DataLoader_OnStart() { // IsProgressVisible = true; // IsDataLoaded = false; } // , void DataLoader_OnFinish() { // IsProgressVisible = false; } // , void DataLoader_OnLoad(string data) { try { Deployment.Current.Dispatcher.BeginInvoke( delegate { // LoadData(); // LastUpdate = DateTime.Now; }); } catch (Exception ex) { Deployment.Current.Dispatcher.BeginInvoke( delegate { MessageBox.Show(ex.Message, "LoadManager OnLoad outer exception", MessageBoxButton.OK); }); } }
рд╕рдВрджрд░реНрдн рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ public partial class MainPage : PhoneApplicationPage { public MainPage() { InitializeComponent();
рдмрд╛рдзреНрдпрдХрд╛рд░реА рдФрд░ рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП XAML <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="auto"/> </Grid.RowDefinitions> <ListBox Grid.Row="0" ItemsSource="{Binding Rates}"> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> </Style> </ListBox.ItemContainerStyle> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Margin="0,0,0,17"> <StackPanel Orientation="Horizontal"> <TextBlock Text="1" Style="{StaticResource PhoneTextLargeStyle}" Foreground="{StaticResource PhoneAccentBrush}" /> <TextBlock Text="{Binding Currency}" Style="{StaticResource PhoneTextLargeStyle}" Foreground="{StaticResource PhoneAccentBrush}"/> </StackPanel> <Grid HorizontalAlignment="Stretch"> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="1*"/> </Grid.ColumnDefinitions> <StackPanel Grid.Column="0"> <TextBlock Text="Buy" Style="{StaticResource PhoneTextNormalStyle}"/> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Buy}" Style="{StaticResource PhoneTextLargeStyle}"/> <TextBlock Text="UAH" Style="{StaticResource PhoneTextLargeStyle}" Opacity="0.5" /> </StackPanel> </StackPanel> <StackPanel Grid.Column="1"> <TextBlock Text="Sale" Style="{StaticResource PhoneTextNormalStyle}" /> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Sale}" Style="{StaticResource PhoneTextLargeStyle}"/> <TextBlock Text="UAH" Style="{StaticResource PhoneTextLargeStyle}" Opacity="0.5"/> </StackPanel> </StackPanel> </Grid> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> <StackPanel Grid.Row="1" Orientation="Horizontal" Margin="0,12,0,0"> <TextBlock Text="Last update:" Style="{StaticResource PhoneTextNormalStyle}" /> <TextBlock Text="{Binding LastUpdate}" Style="{StaticResource PhoneTextAccentStyle}" /> </StackPanel> </Grid>
рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛ :)
рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХ: