程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> CLR是如何被加載並工作的,CLR是加載工作

CLR是如何被加載並工作的,CLR是加載工作

編輯:C#入門知識

CLR是如何被加載並工作的,CLR是加載工作


當運行Windows應用程序的時候,CLR總是默默地為服務著。CLR到底是如何被加載並運行呢?

 

首先,Microsoft專門為CLR定義了一個標准的COM接口。

 

安裝某個版本的.NET Framework,CLR被包含在DLL中,作為COM服務器在Windows注冊表中注冊。

 

一台電腦上可能安裝多個版本的CLR。打開開發人員命令提示,輸入CLRVer.exe,可以看到當前電腦上安裝的CLR版本。

比如,在C:\Windows\Microsoft.NET\Framework\v2.0.50727文件夾中,CLR被包含在mscorwks.dll中;在C:\Windows\Microsoft.NET\Framework\v4.0.30319文件夾中,CLR被包含在clr.dll中。

 

當雙擊一個應用程序,就啟動一個獨立的Windows進程,在.NET最新版本文件夾中有一個類似MSCoreEE.dll的組件去讀取應用程序的.NET版本,然後把對應的某個CLR版本加載到進程中。總之,CLR是寄宿在進程內的。

 

一個進程中可以有幾個CLR版本嗎?
從.NET 4.0起,就可以在一個進程中加載多個CLR版本,而且還不會造成兼容性的問題。

 

CLR是什麼時候卸載的?
只有當終止進程的時候才能卸載CLR。

 

CLR加載mscorlib中所有的程序集。

 

CLR加載托管堆。

 

CLR加載應用程序域,而且還可以加載多個應用程序域,默認加載的應用程序域是被設置為"啟動項目"的那個。

 

在應用程序域內運行多個線程,有些線程是主線程,有些線程是工作線程。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved