Time of Update: 2018-12-07
下面我們就動手來建立一個線程,使用Thread類建立線程時,只需提供線程入口即可。線程入口使程式知道該讓這個線程幹什麼事,在C#中,線程入口是通過ThreadStart代理(delegate)來提供的,你可以把ThreadStart理解為一個函數指標,指向線程要執行的函數,當調用Thread.Start()方法後,線程就開始執行ThreadStart所代表或者說指向的函數。 開啟你的VS.net,建立一個控制台應用程式(Console
Time of Update: 2018-12-07
在某些情況下,客戶代碼過多地依賴於對象容器複雜的內部實現結構,對象容器內部實現結構(而非抽象介面)的變化將引起客戶代碼的頻繁變化,帶來了代碼的維護性、擴充性等弊端。 如何將“客戶代碼與複雜的對象容器結構”解耦?讓對象容器自己來實現自身的複雜結構,從而使得客戶代碼就像處理簡單對象一樣來處理複雜的對象容器? 意圖: 將對象組合成樹形結構以表示“部分-整體”的階層。Composite使得使用者對單個對象和組合對象的使用具有一致性。 Code highlighting produced by
Time of Update: 2018-12-07
不使用C++CLI,不使用 native dll.直接在 .Net 程式 中之行 native code。在vb時代就曾經有不少好事者做過在vb中直接調用之行彙編代碼。還專門做出了通用的模組來進行彙編代碼的動態產生。實際上這就是執行 inline asm 。.Net 中這個老方法仍然有效。不過今天要介紹的不是這個,而是一個函數介面更多樣的方式。大概是06年寫過一個文章 在 C# 中動態調用 native dll 的匯出函數 。今天介紹的方法和這個有一個公用點,都是利用了.Net
Time of Update: 2018-12-07
C#中使用晚綁定實現壓縮Access資料庫.VB對Com後期綁定支援得很好,在C#中可以使用反射來實現.函數實現代碼如下: 1 public static void CompactAccessDB(string strMdbName) 2 { 3 string TempMdbName = Application.StartupPath + @"\Temp.mdb"; 4 5 //建立 Jet 引擎對象 6 object objJetEngine = Activator.
Time of Update: 2018-12-07
在 C++ 中我們能夠通過 LoadLibrary, GetProcAddress 來動態調用 dll 的匯出函數.在 C# 中也能夠用這樣的方式嗎?在 DotNet 2.0 裡面這樣是可以的, 這完全得益於 2.0新增的一個函數Marshal.GetDelegateForFunctionPointer 方法 此方法在 .NET Framework 2.0 版中是新增的。 將非託管函數指標轉換為委託。
Time of Update: 2018-12-07
由於空格的ASCII碼值是32,因此,在去掉字串中所有的空格時,只需逐一查看字串中的所有字元,並判斷它們的ASCII碼值是不是32即可。去掉字串中所有空格的關鍵代碼如下:
Time of Update: 2018-12-07
using System; using System.Data; using System.Data.SqlClient; using CA.Components; //全部在組件名稱空間下 namespace CA.Components { /// <summary> /// General 的摘要說明。 /// 發布日期:2002-8-8 原作者:雷神 /// 此程式屬模式小組 HTTP:/
Time of Update: 2018-12-07
本程式主要功能有: (1)可以根據自己的需要更改上傳到伺服器上的目錄,上傳的源圖、縮圖、文字浮水印圖和圖片浮水印圖分別存入所定目錄下的不同目錄; (2)自動檢查目錄,如無所選擇的目錄,則自動建立它們; (3)自行設定產生縮圖的大小; (4)可以選擇是否需要產生文字浮水印、圖片浮水印,預設為不產生浮水印圖; (5)可以添加、刪除所需上傳的圖片。 在本程式中均加了相關注釋,所以直接發代碼,不再多作解釋。
Time of Update: 2018-12-07
本文講下C#通過Socket編程實現平行主機之間網路通訊的詳細講解,非常不錯的博文,一起來看下吧。 在程式設計中,涉及資料存放區和資料交換的時候,不管是B/S還是C/S模式
Time of Update: 2018-12-07
對xml檔案的記錄進行刪除,修改,或增加新記錄。 利用了datagrid控制項的sortcommand事件對xml裡的記錄進行排序。 email:ouyang76.263.net ------------------------------------------ <%@page language="c#" Trace="true"%> <%@import namespace="System.Data"%> <%@import
Time of Update: 2018-12-07
我大約剛開始學編程時就看到這篇文章了(下面簡稱《C#風潮》),這是一篇被轉載了上萬次的名文,可參見這裡 文章搜尋。今天無意間又看到它,《C#風潮》顯然是很不錯的文章,作者列舉學習中的執行個體包括自己的經曆,將自己對技術學習的深刻理解,清晰地展示給我們,並指出了學習的方向。又一年就要過去了,現在重讀,聯想這幾年的經曆和認識的發展,我覺得有一些新的體會。
Time of Update: 2018-12-07
很多時候我們需要以編程的方式擷取命令列輸出的內容,研究了不少時間,終於搞定了。擷取命令列輸出內容的方式有傳統和非同步兩種方式。傳統方式: 1 using (Process process = new System.Diagnostics.Process()) 2 { 3 process.StartInfo.FileName = "ping"; 4 process.StartInfo.Arguments = "www.ymind.net"; 5 //
Time of Update: 2018-12-07
C#5.0最大的新特性,莫過於Async和Parallel。 以往我們為了讓使用者介面保持相應,我們可以直接使用非同步委託或是System.Threading命名空間中的成員,但System.Threading.Tasks命名空間提供了一種更加簡潔的方法---使用Task類。Task類可以輕鬆地在次線程中調用方法,可以作為非同步委託的簡單替代品。 關於Async,可以參考MSDN的Task 類以及使用 Async 和 Await 的非同步編程(C# 和 Visual
Time of Update: 2018-12-07
using System;using System.Collections.Generic;using System.Windows.Forms;using System.IO;namespace GobalException{ static class Program { /// <summary> /// 應用程式的主進入點。 /// </summary> [STAThread]
Time of Update: 2018-12-07
ref是傳遞參數的地址,out是傳回值,兩者有一定的相同之處,不過也有不同點。使用ref前必須對變數賦值,out不用。out的函數會清空變數,即使變數已經賦值也不行,退出函數時所有out引用的變數都要賦值,ref引用的可以修改,也可以不修改。 區別可以參看下面的代碼:using System;class TestApp{ static void outTest(out int x, out int y) {//離開這個函數前,必須對x和y賦值,否則會報錯。 //y = x;
Time of Update: 2018-12-07
今天update access資料庫時,使用了參數化的方式,結果不報錯,但是資料也沒有更新。後來發現access使用參數化時,參數位置必須和賦值順序相同才行,否則更新時就會出現資料無法更新但是也不報錯的怪現象。 例如:update tablename set [a]=@a1,[b]=@a2 where [id]=@a3 那麼你在加參數時,也必須先加@a,再加@b,最後加@id.也就是說必須要 cmd.Parameters.AddWithValue(“@a1”,a)
Time of Update: 2018-12-07
C#中擷取程式當前路徑的7種最常用的方法string str1 =Process.GetCurrentProcess().MainModule.FileName;//可獲得當前執行的exe的檔案名稱。 string str2=Environment.CurrentDirectory;//擷取和設定目前的目錄(即該進程從中啟動的目錄)的完全限定路徑。//備忘 按照定義,如果該進程在本地或網路磁碟機的根目錄中啟動,則此屬性的值為磁碟機名稱後跟一個尾部反斜線(如“C:\”)。如果該進程在子目錄中啟動,
Time of Update: 2018-12-07
委託是一種封裝方法調用的類型。就像類型一樣,可以在方法之間傳遞委託執行個體,並且可以像方法一樣調用委託執行個體。匿名函數是一個“內聯”語句或運算式,可在需要委託類型的任何地方使用。可以使用匿名函數來初始化命名委託,或傳遞命名委託(而不是命名委託類型)作為方法參數。Lambda 運算式可以綁定到運算式分類樹,也可以綁定到委託。樣本:class Test{delegate void TestDelegate(string s);static void M(string s) {
Time of Update: 2018-12-07
“Lambda 運算式”是一個匿名函數,它可以包含運算式和語句,並且可用於建立委託或運算式分類樹類型。所有 Lambda 運算式都使用 Lambda 運算子,該運算子讀為“goes to”。該 Lambda 運算子的左邊是輸入參數(如果有),右邊包含運算式或語句塊。Lambda 運算式 x => x* x 讀作“x goes to x times x”。可以將此運算式分配給委託類型,如下所示:delegate int del(int i);del myDelegate = x =>
Time of Update: 2018-12-07
C# 語言經過專門設計,以便不同庫中的在 C# 中,衍生類別可以包含與基類方法同名的方法。基類方法必須定義為如果衍生類別中的方法前面沒有如果衍生類別中的方法前面帶有 new 關鍵字,則該方法被定義為獨立於基類中的方法。如果衍生類別中的方法前面帶有 override 關鍵字,則衍生類別的對象將調用該方法,而不是調用基類方法。可以從衍生類別中使用 base 關鍵字調用基類方法。override、virtual 和 new 關鍵字還可以用於屬性、索引器和事件中。預設情況下,C#