private bool LoadExternalModule(string path) {
bool foundSnapIn = false;
IAppFunctionality itfAppFx;
// ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°.
Assembly theSnapInAsm = Assembly.LΠΎadFrom(path);
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°.
TΡΡΠ΅[] theTypes = theSnapInAsm.GetTypes();
// ΠΠΎΠΈΡΠΊ ΡΠΈΠΏΠ° Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ IAppFunctionality.
for (int i = 0; i βΉ theTypes.Length; i++) {
Type t = theTypes[i].GetInterface("IAppFunctionality");
if (t != null) {
foundSnapIn = true;
// ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΠΏΠ°.
object ΠΎ = theSnapInAsm.CreateInstance(theTypes[i].FullName);
// ΠΡΠ·ΠΎΠ² DoIt() ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
itfAppFx = ΠΎ as IAppFunctionality;
itfAppFx.DoIt();
lstLoadedSnapIns.Items.Add(theTypes[i].FullName);
}
}
return foundSnapIn;
}
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² CSharpSnapIn.dll ΠΈ VbNetSnapIn.dll Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΠ° ΡΠΈΡ. 12.13 ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π ΠΈΡ. 12.13. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ²
ΠΠ°Π²Π΅ΡΡΠ°ΡΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ , ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π°ΡΡΠΈΠ±ΡΡΡ [CompanyInfo]. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ LoadExternalModule(), ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° if Π²ΡΠ·ΡΠ²Π°Π»Π°ΡΡ Π½ΠΎΠ²Π°Ρ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ DisplayCompanyData(). ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° System.Type.
private bool LoadExternalModule(string path) {
β¦
if (t != null) {
β¦
// ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.
DisplayCompanyData(theTypes[i]);
}
return foundSnapIn;
}
ΠΠ»Ρ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠ΅Π³ΠΎ Π½Π° Π²Ρ ΠΎΠ΄ ΡΠΈΠΏΠ° ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡ [CompanyInfo].
private void DisplayCompanyData(Type t) {
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ [CompanyInfo].
object[] customAtts = t.GetCustomAttributes(false);
// ΠΡΠ²ΠΎΠ΄ Π΄Π°Π½Π½ΡΡ .
foreach (CompanyInfoAttribute Ρ in customAtts) {
MessageBox.Show(Ρ.Url, String.Format("ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ {0} ΠΈΡΠΈΡΠ΅ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ", Ρ.Name));
}
}
ΠΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄Π½ΠΎ! ΠΠ° ΡΡΠΎΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ. Π― Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΊ ΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ Π²Ρ ΠΎΡΠΎΠ·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅, ΠΌΠΎΠ³ΡΡ Π½Π°ΠΉΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡΠ΅Π΄ΡΡΠ² ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ CommonSnappableTypes, CSharpSnapIn, VbNetSnapIn ΠΈ MyExtendableApp ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ Π³Π»Π°Π²Π΅ 12.
Π Π΅Π·ΡΠΌΠ΅
Π‘Π΅ΡΠ²ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π²Π΅ΡΡΠΌΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ Π°ΡΠΏΠ΅ΠΊΡΠΎΠΌ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. Π ΡΡΠ΅Π΄Π΅ .NET ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠΈΠΏ System.Π’ΡΡΠ΅ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ System.Reflection. ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π²ΡΡΡΠ½Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠΈΠΏΠ° Π² ΡΡΠ΅Π΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΈ Π²ΡΠ·ΠΎΠ² Π΅Π³ΠΎ ΡΠ»Π΅Π½ΠΎΠ² ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΉ Π°ΠΏΡΠΈΠΎΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΈΠΌΠ΅Π½Π°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ»Π΅Π½ΠΎΠ². ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½Π°Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ ΡΡΠΈΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π Π³Π»Π°Π²Π΅ Π±ΡΠ»Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΡΠΎΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ². ΠΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°.
ΠΠΠΠΠ 13. ΠΡΠΎΡΠ΅ΡΡΡ, Π΄ΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ ΠΈ Ρ ΠΎΡΡΡ CLR
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π΄Π²ΡΡ Π³Π»Π°Π²Π°Ρ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΠ°Π³ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π² ΡΡΠ΅Π΄Π΅ CLR ΠΏΡΠΈ Π²ΡΡΡΠ½Π΅Π½ΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ»Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ .NET. Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ CLR ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ, ΠΈ ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ½ΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ, Π΄ΠΎΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Π ΡΡΡΠ½ΠΎΡΡΠΈ, Π΄ΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΈΠ»ΠΈ ΠΡΡDΠΎΡΠ°in) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π½Π°Π±ΠΎΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² .NET. ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π΄ΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠΌΠΈ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ .NET-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΡΠ΅Π΄Π° CLR ΠΏΠΎΠ΄ΡΡΠ°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ Ρ ΠΎΡΠΎΠ±ΡΠΌΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ ΠΊ ΡΡΠ΅Π΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΠ±Π»Π°Π΄Π°Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠ΅Π΄Π° CLR ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ, ΠΌΡ Ρ Π²Π°ΠΌΠΈ ΡΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡΡΠ½ΠΈΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Ρ ΠΎΡΡΠΈΠ½Π³ CLR. ΠΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π² Π³Π»Π°Π²Π΅ 1, ΡΠ°ΠΌΠ° ΡΡΠ΅Π΄Π° CLR ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΎΡΡΠ°ΡΡΠΈ) ΡΠ°ΠΉΠ»ΠΎΠΌ mscoree.dll. ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΡΠ°ΠΉΠ» mscoree.dll Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π½ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΡΠ°Π³ΠΎΠ², ΡΠΊΡΡΡΡΡ ΠΎΡ Π³Π»Π°Π· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Win32
ΠΠΎΠ½ΡΡΠΈΠ΅ "ΠΏΡΠΎΡΠ΅ΡΡ" ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Windows Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET. Π£ΠΏΡΠΎΡΠ΅Π½Π½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΡΠ΅ΡΠΌΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠ΅ΡΡΡΡΠΎΠ² (ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ Π²Π½Π΅ΡΠ½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ) ΠΈ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΏΠ°ΠΌΡΡΡ ΡΠ°ΠΉΠ»Π° *.Π΅Ρ e ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ "ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°" ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ²ΡΡΠ°Π΅ΡΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΡΠΊΠ°Π· Π² Π½Π΅ΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ.
ΠΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ Win32 Π½Π°Π·Π½Π°ΡΠ°Π΅ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ PID (Process ID β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°), ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΠΈΠ»ΠΈ Π²ΡΠ³ΡΡΠΆΠ°ΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ (ΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Win32 API). ΠΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΡΠΎΡΠ΅ΡΡΡ Π² ΠΎΠΊΠ½Π΅ ΠΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Π½ Windows (ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΠΆΠ°ΡΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡ βΉCtrl+Shift+Esc>) ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ , Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ PID ΠΈ ΠΈΠΌΡ ΠΎΠ±ΡΠ°Π·Π° (ΡΠΈΡ. 13.1).
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΡΡΠΎΠ»Π±Π΅Ρ PID Π² ΠΎΠΊΠ½Π΅ ΠΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ Windows Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ, Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π² ΡΡΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΠΈΠ΄βΠΡΠ±ΡΠ°ΡΡ ΡΡΠΎΠ»Π±ΡΡβ¦ ΠΈΠ· ΠΌΠ΅Π½Ρ ΠΈ Π² ΠΎΡΠΊΡΡΠ²ΡΠ΅ΠΌΡΡ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠΊΠ½Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ»Π°ΠΆΠΎΠΊ ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° (PID).
Π ΠΈΡ. 13.1. ΠΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ Windows
ΠΠ±Π·ΠΎΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Win32 ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄ΠΈΠ½ Π³Π»Π°Π²Π½ΡΠΉ "ΠΏΠΎΡΠΎΠΊ", Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΡΡΠ½Π΅Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ System.Threading, Π½ΠΎ ΠΏΠΎΠΊΠ° ΡΡΠΎ Π΄Π»Ρ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π·Π΄Π΅ΡΡ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π·Π°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΠΏΠΎΡΠΎΠΊ β ΡΡΠΎ "Π½ΠΈΡΡ" Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠΎΡΠΊΠΎΠΉ Π²Ρ ΠΎΠ΄Π° ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Win32 Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ WinMain(). ΠΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ Main(). ΠΡΠΎΡΠ΅ΡΡΡ, ΡΠΎΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, Π±ΡΠ΄ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Π½ΠΈΡ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ΄Π½ΠΎ-ΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅) ΡΠ°ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ "ΡΠΊΠ»ΠΎΠ½Π΅Π½" Π½Π΅ ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΏΠ΅ΡΠ°ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠΌΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡΡΠΊΠ°ΠΌΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ).
Π£ΡΠΈΡΡΠ²Π°Ρ ΡΡΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Win32 API ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΡΠΎΡΠΈΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ (ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΡΡ ΡΠ΄ΠΎΠ±Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Win32 API, ΠΊΠ°ΠΊ CreateThread(). ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ (ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΈΠ»ΠΈ Π²ΡΠΎΡΠΈΡΠ½ΡΠΉ) Π² ΡΠ°ΠΊΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΎΡΠΊΡΡΡΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ Π΄Π°Π½Π½ΡΡ Π½Π° ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΠΈ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌΠΈ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠ³Π»Π° Π±ΡΡΡΡΠ΅Π΅ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°. Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΈΠ»Π»ΡΠ·ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π° ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΡΡΠ΅Π±ΡΡΡΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (ΡΠ½ΠΎΠ²Π° Π²ΡΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΎ ΠΏΠ΅ΡΠ°ΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°). ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π²ΡΠΎΡΠΈΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ, Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² ΡΠ΅Π»ΠΎΠΌ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π»ΡΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. Π₯ΠΎΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΡ ΡΠ΄ΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ°ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π°ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ (Π° ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π΅ΠΌΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ).