ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΠ‘ Windows Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² .NET, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΊΠΎΠ³Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ. Π ΠΠ‘ Windows XP ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΡΠ°Π³Π°ΠΌΠΈ Π±ΡΠ΄ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ (Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΈΠ· Π³Π»Π°Π²Ρ 11, ΡΡΠΎ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ .NET ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Win32).
1. ΠΠ‘ Windows Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π² ΠΏΠ°ΠΌΡΡΡ.
2. ΠΠ‘ Windows ΡΠΈΡΠ°Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ WinNT, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ (ΠΏΠΎ ΡΠ»Π°Π³Ρ IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR), ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΎΠΌ .NET.
3. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°Π· ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΎΠΌ .NET, Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ mscoree.dll.
4. ΠΠ°ΡΠ΅ΠΌ mscoree.dll Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΎΠ΄Π½Ρ ΠΈΠ· Π΄Π²ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ CLR (mscorwks.dll ΠΈΠ»ΠΈ mscorsvr.dll).
5. Π ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ "ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° ΡΠ΅Π±Ρ" ΡΡΠ΅Π΄Π° CLR, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ°Ρ Π²ΡΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ .NET Π·Π°Π΄Π°ΡΠΈ (ΠΏΠΎΠΈΡΠΊ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ², Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° CIL-ΠΊΠΎΠ΄Π°, ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° ΠΈ Ρ.Π΄.).
ΠΡΠ°ΠΊ, mscoree.dll - ΡΡΠΎ Π½Π΅ ΡΠ°ΠΌΠ° CLR (ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π³Π»Π°Π²Π°Ρ ). Π₯ΠΎΡΡ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ mscoree.dll Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ CLR, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» β ΡΡΠΎ "ΡΠ°Π·Π²ΠΈΠ»ΠΊΠ°" Π½Π° ΠΏΡΡΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΄Π²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ CLR. ΠΡΠ»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΌΠ°ΡΠΈΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ, Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ mscorwks.dll. ΠΡΠ»ΠΈ ΠΌΠ°ΡΠΈΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ, Π² ΠΏΠ°ΠΌΡΡΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ mscorsvr.dll (ΡΡΠΎ Π²Π΅ΡΡΠΈΡ CLR, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°Ρ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌΠΈ).
ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ CLR
"ΠΠΎΠΏΠ½ΡΠ²" ΡΡΡΡ Π³Π»ΡΠ±ΠΆΠ΅, ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° .NET ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ρ.Π΅. Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡΠΈΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET (Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Π±ΡΠ»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²Π΅ΡΡΠΈΠΈ 1.0.1.1 ΠΈ 2.0). Π‘Π°ΠΌ ΡΠ°ΠΉΠ» mscoree.dll ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ System32 ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Windows. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΠΌΠΎΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ mscoree.dll "ΠΏΡΠΎΠΆΠΈΠ²Π°Π΅Ρ" Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ C:\WINDOWS\system32 (ΡΠΈΡ. 13.11).
Π ΠΈΡ. 13.11. Π€Π°ΠΉΠ» mscoree.dll Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ system32
ΠΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ mscoree.dll ΠΏΠΎ ΡΠ΅Π΅ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Win32 (Π΄Π°, ΠΏΠΎ ΡΠ΅Π΅ΡΡΡΡ ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ) Π²ΡΡΡΠ½ΡΠ΅ΡΡΡ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΈΠ· ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ ΠΈ ΠΏΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ .NET Framework (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π΅ΡΠ²Ρ HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework, ΡΠΈΡ. 13.12).
Π ΠΈΡ. 13.12. ΠΡΡΡΠ½Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΈ ΠΏΡΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET
ΠΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΈ ΠΈ ΠΏΡΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET Π² ΠΏΠ°ΠΌΡΡΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π½ΡΠΆΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ mscorwks.dll/mscorsvr.dll. ΠΠ° ΠΌΠΎΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΊΠΎΡΠ½Π΅Π²ΡΠΌ ΠΏΡΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET ΡΠ²Π»ΡΠ΅ΡΡΡ C:\WINDOWS\Microsoft.NET\FrΠ°mΠ΅work. Π ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π΄Π»Ρ .NET Π²Π΅ΡΡΠΈΠΈ 1.0.1.1 ΠΈ (Π½Π° Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ½ΠΈΠ³ΠΈ) ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ 2.0 (ΡΠΌ. ΡΠΈΡ. 13.13, Π²Π°ΡΠΈ Π½ΠΎΠΌΠ΅ΡΠ° Π²Π΅ΡΡΠΈΠΉ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ).
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ CLR
ΠΠΎΠ³Π΄Π° mscoree.dll ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ (Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π΅ΡΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΡ), ΠΊΠ°ΠΊΡΡ Π²Π΅ΡΡΠΈΡ mscorwks.dll/mscorsrv.dll Π·Π°Π³ΡΡΠ·ΠΈΡΡ, ΡΠΈΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π΄Π΅Π» Policy (ΠΠΎΠ»ΠΈΡΠΈΠΊΠ°) Π²Π΅ΡΠ²ΠΈ HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework ΡΠ΅Π΅ΡΡΡΠ°. Π ΡΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ CLR, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΏΠΎΡΡΡΠΎΠ΅Π½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ .NET Π²Π΅ΡΡΠΈΠΈ 1.0.3.705, mscoree.dll ΡΠ·Π½Π°Π΅Ρ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ, ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π²Π΅ΡΡΠΈΡ 1.1.4322.
Π ΠΈΡ. 13.13. Π€Π°ΠΉΠ» mscorwks.dll Π²Π΅ΡΡΠΈΠΈ 2.0
ΠΡΠ΅ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ½ΠΎ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π ΡΠ΅Π΄ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π·Π°ΡΡΠ°Π²ΠΈΡΡ mscoree.dll Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ CLR, ΠΈ ΡΠΎΠ³Π΄Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ» *.config ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
βΉ?xml version="l.0" encoding="utf-8"?βΊ
βΉconfigurationβΊ
βΉstartupβΊ
βΉrequiredRuntime version ="1.0 .3705"/βΊ
βΉ/startupβΊ
βΉ/configurationβΊ
ΠΠ΄Π΅ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ βΉrequiredRuntimeβΊ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡΠΈΡ 1.0.3705. ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π½Π° ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Π½Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ .NET Π²Π΅ΡΡΠΈΠΈ 1.0.3705, ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ²ΠΈΠ΄ΠΈΡ ΠΎΠΊΠ½ΠΎ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½Π° ΡΠΈΡ. 13.14.
Π ΠΈΡ. 13.14. ΠΠ»Π΅ΠΌΠ΅Π½Ρ βΉrequiredRuntimeβΊ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ CLR Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°[2]
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Ρ ΠΎΡΡΡ CLR
Π’ΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΠ» ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ°Π³ΠΈ, ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Windows Π΄Π»Ρ Ρ ΠΎΡΡΠΈΠ½Π³Π° CLR ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ. ΠΠΎ Microsoft ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΎΠ±Ρ ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ CLR. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ. Microsoft Internet Explorer ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Windows Forms (ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΆΠ΅ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ActiveX). ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ Microsoft SQL Server (Ρ ΠΊΠΎΠ΄ΠΎΠ²ΡΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Yukon ΠΈ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ SQL Server 2005) ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½Π° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΉ Ρ ΠΎΡΡΠΈΠ½Π³ CLR.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ. Microsoft ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»Π° Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΡΡΠΎΠΈΡΡ ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Ρ ΠΎΡΡΡ CLR. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ C/C++ ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ COM-ΡΠΈΠΏΠ° (mscorΠ΅e.tlb). Π₯ΠΎΡΡ ΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Ρ ΠΎΡΡΠ° CLR ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ COM-ΡΠΈΠΏΠ°), ΡΡΠ° ΡΠ΅ΠΌΠ° Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡ Π²ΠΎΠΏΡΠΎΡΡ, Π² Π‘Π΅ΡΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠ΅ΠΉ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ (ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΊΠ»ΡΡΡ "CLR hosts").
Π Π΅Π·ΡΠΌΠ΅
Π¦Π΅Π»ΡΡ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ Π±ΡΠ»ΠΎ Π²ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ°Π· .NET. ΠΡ ΠΈΠΌΠ΅Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΆΠ΅ ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° Win32 Π±ΡΠ»ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΊ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ CLR. ΠΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ (ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΏΠ° System.DiagnostiΡs.Process) ΡΠ΅ΠΏΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΡΠ΅ΡΡΡ ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ Π³ΡΠ°Π½ΠΈΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ².
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄ΠΎΠΌΠ΅Π½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΠΈΠΏΠΎΠ², ΡΡΠ΅Π΄Π° CLR ΠΌΠΎΠΆΠ΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. ΠΠ»Π°Π²Π° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π΅ΡΠ°Π»Π΅ΠΉ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°ΠΌΠ° CLR ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Win32.
ΠΠΠΠΠ 14. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ, Π΄ΠΎΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ. Π ΡΡΠΎΠΉ ΠΌΡ Π²ΡΡΡΠ½ΠΈΠΌ, ΠΊΠ°ΠΊ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET ΡΡΡΠΎΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΊΠ°ΠΊ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠΎΡΠΎΠΊΠΎΠ² Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ΅ΡΡΡΡΠΎΠ².
ΠΠ°ΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ½ΠΎΠ²Π° Π½Π°ΡΠ½Π΅ΡΡΡ Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ ΡΠΈΠΏΠ° Π΄Π΅Π»Π΅Π³Π°ΡΠ° .NET, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠΉΡΠΈ ΠΊ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π΅Π³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎ Π²ΡΠΎΡΠΈΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΡΡΠ»Π΅Π΄ΡΠ΅ΠΌ ΡΠΈΠΏΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ System.Π’hreading. ΠΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΏΠΎΠ² (Thread.ThreadStart ΠΈ Ρ.Π΄.), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ Ρ Π»Π΅Π³ΠΊΠΎΡΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π΅ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π° Π² Π³Π°ΡΠ°Π½ΡΠΈΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΏΡΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ. ΠΠΎΡΡΠΎΠΌΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Π³Π»Π°Π²Π° ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΡ ΠΊΠ°ΡΠΊΠ°ΡΠΎΠΌ .NET Framework.
ΠΠ·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ² ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΎΡΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½, ΠΊΠ°ΠΊ ΠΏΡΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Ρ ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ .NET ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ ΠΈ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ, ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° (ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΠΌΡΠΉ ΡΡΠ΅Π΄ΠΎΠΉ CLR ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Main()) ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΡΠΎΡΠΈΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ. Π Π΅Π°Π»ΠΈΠ·ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π»ΡΡΡΠΈΠΌ ΠΎΡΠΊΠ»ΠΈΠΊΠΎΠΌ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠ΅ ΡΠ²ΠΎΠΈ Π·Π°Π΄Π°ΡΠΈ).
ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ System.Threading ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ Π·Π΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΊΠ»Π°ΡΡ Thread, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΏΠΎΡΠΎΠΊ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ Π΄Π°Π½Π½ΡΠΉ ΡΠ»Π΅Π½ Π² ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΏΡΠΎΡΡΠΎ Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Thread.CurrentThread.
private static void ExtractExecutingThread() {
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π³ΠΎ
// Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄.
Thread currThread = Thread.CurrentThread;
}
ΠΠ»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET Π½Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΎΡΠΈΠ², Π΄ΠΎΠΌΠ΅Π½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ Π΄ΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠΎΡΠΎΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡ Π³ΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ΄ΡΠΈΠ½ΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠ² Win32 ΠΈ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎΡΡΠΈ CLR.