C# 積木模組 ABC(一)(轉自新一代技術網)

來源:互聯網
上載者:User
第一個C#程式:經典常式Hello World

“Hello World”可以說是學習每一種程式設計語言的第一個常式了。我們可以在NotePad、Wordpad等任何編輯器中輸入以下的C#代碼,並儲存為helloworld.cs,最後在命令列中執行csc helloworld.cs來運行檔案:


// using system
using System;
class Hello
{
static void Main() { // display output on console
Console.WriteLine("Hello,C# World!");
}
}


用OpenFileDialog類瀏覽或開啟檔案

同VC++中CfileDialog的 Open 方法相同,C#中的OpenFileDialog類可用於開啟一個檔案。這個類是從FileDialog派生出來的。用這個類中的 OpenFile方法開啟一個檔案,然後就可以通過流(steam)來讀取這個檔案。

請看下面的常式代碼,它使用 OpenFileDialog類瀏覽一個檔案:

OpenFileDialog fdlg = new OpenFileDialog();
fdlg.Title = "C# Corner Open File Dialog" ;
fdlg.InitialDirectory = @"c:\" ;
fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*" ;
fdlg.FilterIndex = 2 ;
fdlg.RestoreDirectory = true ;
if(fdlg.ShowDialog() == DialogResult.OK)
{
textBox1.Text = fdlg.FileName ;
}

Title一行設定開啟對話方塊的標題,Filter一行為開啟的檔案類型設定一個過濾器,FileName一行包含了所選中的檔案名稱。


下圖就是啟動並執行結果:




從C#中調用COM組件

.NET架構是COM的一個自然發展,兩者共用許多核心要素,這包括組件的再利用以及語言的中立性。為了向後相容,COM Interop可以使用現存的COM組件而不要求對原始組件進行修改。當一個 .NET 架構開發人員想將COM代碼合并到一個管理應用程式中時,就可以用COM Interop功能引入相關的COM類型。引入之後,這個COM類型就可以使用了。這屬於前期串連。但是有時候你需要對象的後期串連,這在.NET中也能實現,使用名稱空間映射就可以通過後期串連來調用COM對象。


這裡介紹一個應用程式常式,它將調用Excel,並且通過使用後期串連使它可視。


後期串連將使用Reflectionb的Type類,這個Type類有許多方法可以取得COM對象,就象我們已經使用過的 GetTypeFromProgID("Application"),這個方法從系統註冊表中得到COM ID,然後使用STATIC類的成員 Activator.CreateInstance()建立這個COM對象的一個新例示。


要想調用COM對象的方法、函數和屬性,就必須使用包含正確設定的Type對象的InvokeMethod()方法。這個方法接受一些參數變數,其中最重要的一個是方法類型的ex屬性(get或set)。在例子中我們為Excel.Visible使用了set屬性,從而使Excel應用程式可視。


我們將嘗試在.NET環境中調用Excel應用程式。這是一個後期串連應用程式,因為如果是前期串連的話你就需要使用COM對象的RCW(RunTime Callable Wraper:已耗用時間的可調用包)來完成下面的命令列程式tblimp所完成的任務:


ex. c:\> tblimp /out:


下載COMinDOTNET.zip,這是一個控制台應用程式。下面是調用excel的代碼:


//Variable
Type excel;
object[] parameter= new object[1];
object excelObject;
try
{
//Get the excel object
excel = Type.GetTypeFromProgID("Excel.Application");
//Create instance of excel
excelObject = Activator.CreateInstance(excel);
//Set the parameter whic u want to set
parameter[0] = true;
//Set the Visible property
excel.InvokeMember("Visible", BindingFlags.SetProperty, null, excelObject, parameter);
}
catch(Exception e)
{
Console.WriteLine("Error Stack {0} ", e.Message) ;
}
finally
{
//When this object is destroyed the Excel application will be closed
//So Sleep for sometime and see the excel application
Thread.Sleep(5000);
//Relaese the object
//GC.RunFinalizers()
}


建立多線程應用程式


在.NET和C#中編寫一個多線程應用程式將非常得容易。即使對於那些從沒有用C#編寫過多線程應用程式的初學者,只需遵循以下這些簡單的步驟就可以實現目的。


定義名稱空間

在.NET中,多線程功能是在System.Threading名稱空間中定義的。因此,在使用任何線程類之前,必須定義 System.Threading名稱空間。定義方法如下:


using System.Threading;


啟動線程

System.threading名稱空間中的Thread類代表一個線程對象,用這個類對象可以建立新的線程,刪除、暫停和恢複線程。 下面的代碼使用Thread類建立一個新的線程,然後啟動這個線程:


thread = new Thread(new ThreadStart( WriteData ));

thread.Start();


其中WriteData是這個線程要執行的一個函數,代碼如下:


protected void WriteData()

{

string str ;

for ( int i = 0; i<=10000; i++ )

{

str = "Secondary Thread" + i.ToString();

Console.WriteLine(listView1.ListItems.Count, str, 0, new string[]{""} );

Update();

}

}

殺死線程


Thread類的Abort方法用於永久地殺死一個線程。但是請注意,在調用Abort方法前一定要判斷線程是否還啟用,也就是判斷thread.IsAlive的值:


if ( thread.IsAlive )

{

thread.Abort();

}


暫停線程


Thread.Sleep方法用於將一個線程暫停一段時間,代碼如下:


thread.Sleep();


設定線程的優先權


我們可以使用Thread類的ThreadPriority屬性設定線程的優先權。線程優先權的取值範圍是Normal、AboveNormal、BelowNormal、Highest或者Lowest。請看下面的設定代碼:


thread.Priority = ThreadPriority.Highest;


延遲線程


Thread類的Suspend方法可以延遲一個線程。線程被延遲到調用Resume方法為止。


if (thread.ThreadState = ThreadState.Running )

{

thread.Suspend();

}


恢複被延遲的線程


調用Resume方法可以恢複一個被延遲的線程。如果線程沒有被延遲,Resume方法就是無效的。


if (thread.ThreadState = ThreadState.Suspended )

{

thread.Resume();

}


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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