日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

CSC停止问题的解决

發(fā)布時(shí)間:2023/12/20 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CSC停止问题的解决 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

涉及到自動(dòng)編譯的時(shí)候,比如使用XmlSerializer Xml的序列化和反序列化或codeDom的自動(dòng)編譯的方法(CompileAssemblyFromBatch()等)使用的時(shí)候,會(huì)啟動(dòng)C#的編譯器csc.exe, 由于在亞洲版的win xp操作系統(tǒng)中,特有的ConIme.exe,所以csc內(nèi)部中有啟動(dòng)ConIme的功能,為了其支持輸入如漢字,和日本語,韓國語的字符。但是啟動(dòng)過程中會(huì)有ConIme啟動(dòng)失敗的時(shí)候,此處原因未明(ms也沒有個(gè)說法),會(huì)在此處等上10分鐘,然后csc才會(huì)接到timeout的異常而返回。

根據(jù)ms的說法,解決方法是,一個(gè)是不用csc如果xml序列化的時(shí)候,可以不用call csc.exe but 如果真的要自動(dòng)編譯一個(gè)C#文件,那就逃也逃不掉csc了。這時(shí)候要做的就是屏蔽ConIme,不讓其啟動(dòng),這樣csc就可以擺脫那個(gè)萬一的10分鐘的deadLock了。

大致代碼如下:

?1try
?2{
?3????RegistryKey?hkcu?=?Registry.CurrentUser??;
?4????RegistryKey?skconsole?=?hkcu.OpenSubKey?(?"Console",true?)?;
?5???????
?6????if?(skconsole.GetValue("LoadConIme").Equals(1)?)
?7????{
?8????????skconsole.SetValue("LoadConIme",0);
?9????}

10????hkcu.Close();
11????skconsole.Close();
12????//?コンパイル
13????CompilerResults?cret?=?compiler.CompileAssemblyFromFileBatch(?cprm,?filenames);
14????
15????return?cret;
16
17}
?//end?try?
18catch(Exception?e)
19{
20????throw?e;
21}

22finally
23{
24????RegistryKey?hkcu?=?Registry.CurrentUser??;
25????RegistryKey?skconsole?=?hkcu.OpenSubKey?(?"Console",true?)?;
26????if?(skconsole.GetValue("LoadConIme").Equals(0)??)
27????{
28????????skconsole.SetValue("LoadConIme",1);
29????}

30????hkcu.Close();
31????skconsole.Close();
32
33}

代碼簡單說明如下:
1.opensubkey("Console",true)的第二個(gè)參數(shù)要是真,否則不能修改其keyvalue.
2.修改了keyvalue后,要close()這樣才能有效。總開著也覺得不舒服吧?
3.要finally中恢復(fù)你修改的keyvalue.這是因?yàn)閷oadConIme的value改為0之后,再Cmd Console中中文輸入法等亞洲系列的ConIme將無法啟動(dòng),所以只在你需要的時(shí)候屏蔽一下,用完了總是要還的。(出來混總是要還的。)



轉(zhuǎn)載于:https://www.cnblogs.com/Bluse/archive/2005/09/24/243268.html

總結(jié)

以上是生活随笔為你收集整理的CSC停止问题的解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。