.NET(C#):AppDomain.DoCallBack方法和Lambda運算式

眾所周知:AppDomain.DoCallBack方法會在指定應用程式定義域中執行代碼,如果傳入委託是靜態,那麼委託正常進行。如果傳入委託是對象的成員函數,那麼這個對象會被封送(按值或者按引用)。當傳入委託是以Lambda運算式的形式,那麼有些地方值得注意。如果是傳入對外部變數捕獲的Lambda運算式,那麼DoCallBack方法總會拋出異常的,看下面代碼(這是一種錯誤的在另外一個應用程式定義域中建立Remoting對象的方法)using System;using System.Runtime.

.NET(C#):System.Console控制台和按鍵動作

通過編寫一個控制台下輸出使用者按鍵的簡單小程式,用來練習控制台下(System.Console類)的一些跟輸入按鍵相關的操作。 擷取控制台按鍵資訊擷取控制台下按鍵資訊並可以制定按鍵字元是否被輸出的函數是Console,ReadKey,它返回一個ConsoleKeyInfo。class Console    static ConsoleKeyInfo ReadKey(bool 是否不顯示按鍵); ConsoleKeyInfo類包含按鍵的詳細資料:class ConsoleKeyInfo   

C# 3.0中集合初始設定項(Collection Initializers)到底做了什嗎?

今天一朋友問我一個問題:怎樣用集合初始設定項來初始化一個字典?他一直認為所謂集合初始設定項就是向一個類似List的容器中逐個添加資料,但是換成了字典一次需要兩個資料,一下不知道怎麼辦…… 我首先又一次強烈推薦他把MSDN當成解決一切問題的第一步嘗試,其實集合初始設定式MSDN裡闡述得很透徹(地址:http://msdn.microsoft.com/zh-cn/library/bb384062.aspx

C++隨筆(二)

1、在Count語句中使用“\n”時,必須使用反斜線,也就是“\”。如果“\n”寫成了“/n”,編譯不會給出錯誤訊息。程式仍會運行,只是輸出的內容可能於預期不同。2、先行編譯指令“#”,有的編譯器要求#前後都不要有空格,所以最好的方法是“#”放在一行的開頭,而且#和單詞include之間不要輸入空格。3、有C++編譯器可以省略“return

.NET(C#):調用WMI方法來得到進程的使用者名稱稱

在WMI查詢Win32_Process類型時,建立進程的使用者資訊(使用者名稱和網域名稱)是沒有包含在屬性列表中的,查了下MSDN,只有通過調用GetOwner(或者GetOwnerSid)方法才可以。(參考GetOwner方法:http://msdn.microsoft.com/en-us/library/aa390460(v=vs.85).aspx)這個方法有兩個out的參數,分別是使用者名稱和網域名稱,都是字串類型。 在.NET中,通過ManagementObject.InvokeMeth

.NET(C#): 為Collection加入成員添加刪除事件

通過繼承Collection<T>類型,並為其加入兩個事件ItemAdded和ItemRemoved,使用這兩個事件可以覺察到容器內項目的添加和刪除的操作。事件提供元素值和索引值的資料,使用起來如下:static void Main(string[] args){    var list = new MyCollection<string>();    list.ItemAdded += list_ItemAdded;    list.ItemRemoved +=

.NET(C#): 在非UI線程中使用await

主題是“在非UI線程中使用await”,不過如果讀者真想這麼做,我想先反問下讀者,為什麼你要在非UI線程中使用await?畢竟,需要執行的任務已經執行在一個Task中了,此時你只需要在UI線程中使用await來非同步等待執行Task線程,await會根據當前SynchronizationContext環境來執行後續代碼。這一切都是合情合理的。因此如果你的代碼中有在非UI線程中使用await,並且await後的代碼需要訪問UI的情況,考慮修正你的代碼。 當然探索技術的一大樂趣就是去考慮一些非通常情

.NET(C#): 當for迴圈的聲明變數被委託捕獲

發現程式的一個BUG究其原因是因為在for迴圈中用委託捕獲了聲明變數(就是那個常見的變數i),這種情況會發生在當你捕獲了for迴圈的聲明變數,但是在聲明變數已經改變後才去調用委託,你期望得到捕獲變數時的值,但是得到的會是變數最終的值,即便變數類型是實值型別。來看這段代碼:var list = new Action[5];for (int i = 0; i < 5; i++){    list[i] = new Action(() => Console.WriteLine(i));} 

.NET(C#):ManagementQuery類型構建WMI中的WQL選取查詢和事件查詢

首先瞭解一下WMI.NET中查詢類的結構: 基礎類是System.Management.ManagementQuery,代表抽象的管理查詢類型,它繼承ICloneable。ManagementQuery是抽象類別,它有兩個重要的屬性:QueryLanguage和QueryString(都是字串類型),分別代表查詢語言和查詢字串。雖然ManagementQuery類型是抽象類別,但其內部建構函式的查詢語言就是WMI中的WQL語言: 因此無論是使用ManagementQuery的繼承類ObjectQ

.NET(C#):用3種方式來實現非同步取消Task後向當前SynchronizationContext執行操作

.NET TPL擁有非常大的靈活性,你會發現同一個操作會有許多不同的實現方式。正如標題所講,我們來看這樣一個簡答的操作:取消Task的執行,然後在當前SynchronizationContext中執行代碼。當然一切操作都必須是非同步,因此不能使用Task.Wait這樣的方法。我想到的實現方法有三種。 首先是準備工作,先寫一個方法用來執行一個可以取消的Task,之後的具體實現代碼就直接調用這個方法://執行一個可以取消的Taskstatic Task

.NET(C#):使用ManagementEventWatcher進行WMI事件查詢

首先ManagementEventWatcher繼承與Component類,因此也繼承IDisposable,注意使用後資源銷毀。ManagementEventWatcher.Query屬性是一個EventQuery對象,用來代表監控的WQL事件查詢語句。 對於同步事件查詢(調用線程會阻塞),使用WaitForNextEvent方法。無參數,返回一個ManagementBaseObject。對於非同步事件查詢(調用線程不會阻塞),使用Start方法。然後使用ManagementEventWatc

.NET(C#):網路域中的電腦的WMI查詢

WMI支援網路域中的計算甲查詢。在.NET下也有多種實現方式。 首先從技術上講,每當進行一次WMI查詢(即使直接使用ManagementObjectSearcher提供的快捷API方法),內部也會有WMI對於資訊員電腦的串連過程。System.Management命名空間中有特定的類來完成此類需求。ManagementPath代表一個抽象的WMI路徑,這個路徑可以是WQL查詢也可以WMI命名空間路徑(當然“WQL中可以加入WMI命名空間路徑”這樣想也是可以的)。而ManagementScope就

.NET(C#): Flags枚舉的隱式類型並操作

我們都知道,C#中可以使用“|”符號來進行Flags枚舉的並操作。(事實上非Flags枚舉也可以這樣做,因為“|”就是二進位並操作,而任何枚舉都可以轉換成數字。)。但是通常使用“|”操作都是在已知枚舉類型的情況下,比如這樣:FileAttributes.System | FileAttributes.Hidden 如果需要隱式類型並操作,則需要先把枚舉值統一轉換成數字,然後進行二進位並操作,再轉換回枚舉類型。這裡注意:你可以直接把數字轉換成一個已知的枚舉類型,但是不可以把數字轉換成Enum對象,

.NET 4.5(C#):INotifyPropertyChanged執行的演變:從運算式樹狀架構到調用方資訊的BindableBase類型

INotifyPropertyChanged介面,任何WPF、Silverlight甚至是未來WinRT程式員都必須知道的類型。執行上不用多說,建立一個PropertyChangedEventArgs,資料是屬性的名稱。隨著MVVM模式的大範圍應用,讓人們不得重新審視INotifyPropertyChanged的執行方式(因為MVVM中的ViewModel通常是執行INotifyPropertyChanged的),顯然,最簡單的執行方式很不雅觀,如下:string

.NET(C#):使用WMI事件查詢實現對進程和可移動磁碟的監控

目錄進程啟動或結束監控 可移動磁碟插入或刪除監控    返回目錄 進程啟動或結束監控  代碼://注意:引用System.Management.dll 和 using System.Management;static void Main(string[] args){    //建立WQL事件查詢,用於執行個體建立    var qCreate = new WqlEventQuery("__InstanceCreationEvent",        TimeSpan.FromSeconds(1

.NET(C#):使用FileVersionInfo類做一個簡單的檔案資訊查看器

Windows中每一個檔案的屬性對話方塊中都有額外的檔案資訊,比如:System.Diagnostics.FileVersionInfo類可以擷取檔案的資訊。通過靜態方法FileVersionInfo.GetVersionInfo來通過一個檔案路徑構造一個FileVersionInfo對象。FileVersionInfo的屬性就是檔案資訊的項目,下面是一些常用的檔案屬性對應FileVersionInfo的屬性名稱:注釋 Comments公司名稱 CompanyName檔案名稱

C++隨筆(一)

1、一個位元組是8位,也就是8個“1”或是“0”。2、記憶體被劃分成許多編了號的位元組的列表,該編號為位元組的地址。3、一組連續的位元組可作為一個資料項目(比如數字或字母)的儲存位置來使用,也可以稱之為記憶體塊。組內第一個位元組的位置就是這個更大的儲存位置的地址,也稱之為記憶體塊地址。4、編譯器是一個中特殊的程式,它能將進階語言程式(比如C++程式),也可稱為來源程式轉換成機器語言程式,也可稱為目標程式,使計算能直接理解並執行。5、C++程式的目標碼(目標程式,機器碼)與程式用到的常式(比如輸入

.NET(C#):使用ResourceManager類型

注意:這是另一篇文章“.NET(C#):淺談資訊清單資源和RESX資源”的一部分。ResourceManager類型在System.Resources命名空間內,用來在運行時刻進行二進位資訊清單資源(.resources檔案)的讀取,其也支援外部檔案形式的讀取。它和其他資源讀取類:ResourceSet和IResourceReader的區別是它的功能是最強大的(內部會使用一個ResourceSet),因為不因能夠像ResourceSet一樣快速讀取資源資料,它可以對.NET中程式集的附屬組件(s

.NET(C#):使用IResourceReader,IResourceWriter和ResourceSet

注意:這是另一篇文章“.NET(C#):淺談資訊清單資源和RESX資源”的一部分。所有提及類均在:System.Resources命名空間內。來看這三個類的常用成員:interface IResourceWriter: IDisposable    void AddResource(string name, object/string/byte[]);    //添加資源資料    void Generate();    //更新緩衝區(Flush)    void Close();    //

.NET(C#):監控CPU和記憶體的使用狀況

更新:完整的工作管理員請參考: Mgen 輕型工作管理員 更新和簡介 最近在用C#/WPF寫一個工作管理員程式,先把監控CPU和記憶體的部分單獨放出來。 完全和工作管理員顯示同樣的資料: 目前的版本的程式和原始碼下載 注意:此為微軟SkyDrive存檔,請用瀏覽器直接下載,用某些下載工具可能無法下載 程式運行環境:.NET Framework 4.0 Client Profile原始碼環境:Visual Studio 2010 關於代碼,CPU方面的以前講過,可以參考:.NET(C#

總頁數: 4314 1 .... 450 451 452 453 454 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.