如果要判斷Thread執行完畢,才繼續執行程式,此時可以使用Join即可達到等待作用。
using System;
using System.Collections.Generic;
using System.Threading;
namespace Test
{
class Program
{
static void Main(string[] args)
{
List<Thread> List_Thread = new List<Thread>();
for (int i = 0; i < 10; i++)
{
//建立執行緒
List_Thread.Add(new Thread((object x) =>
{
int temp = 3;
while (temp-- > 0)
{
Console.WriteLine("Thread ID :" + x.ToString() + "\t" + temp.ToString());
System.Threading.Thread.Sleep(1000);
}
}));
List_Thread[i].Start(i + 1);
}
//等待所有執行緒完成
foreach (Thread t in List_Thread) t.Join();
Console.WriteLine("End");
}
}
}基本的Thread寫法
using System;
using System.Threading;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Thread t = new Thread(new ThreadStart(ThreadFun));
t.Start();
}
static void ThreadFun()
{
int x = 0;
while (++x > 0) Console.WriteLine(x.ToString());
}
}
}如果寫Console模式,就會發現只有一個Thread無法同時接收及輸出。
此時只要運用 Thread 達到 顯示 及 接收ESC!
原理就是多建立一個Thread執行程式用,另外一個監測ESC事件用。
using System;
using System.Threading;
namespace Test
{
class Program
{
static void Main(string[] args)
{
//產生Thread輸出數字1,2,3....
Thread t = new Thread(() =>
{
int x = 0;
while (++x > 0) Console.WriteLine(x.ToString());
});
t.Start();
//當使用者按下ESC停止Thread
while (Console.ReadKey(true).Key != ConsoleKey.Escape) ;
t.Abort();
}
}
}
使用C#將圖片檔案轉為Icon檔案。
首先必須先準備16x16的小圖檔案,然後利用程式將他轉為Icon檔案。
//將圖檔設定給 bitmap 物件存放,並設定大小。 Bitmap myBitmap = new Bitmap(Image.FromFile(filePath ), 16, 16); IntPtr Hicon = myBitmap.GetHicon(); Icon newIcon = Icon.FromHandle(Hicon); FileStream outStream = new FileStream(@"c:\a.ico", FileMode.OpenOrCreate); newIcon.Save(outStream); outStream.Flush(); outStream.Close();
使用C#取得DNS的正反解,可以使用IP取得Domain或是Domain取得IP。
using System.Net;
using System.Net.Sockets;
namespace Test {
class Program {
static void Main(string[] args) {
//取得主機名稱
string HostName = "www.hinet.net";
Console.WriteLine("{0} 所對應的 IP 位址如下 : ", HostName);
IPHostEntry myAddress = Dns.GetHostEntry(HostName);
IPAddress[] myIPAddress = myAddress.AddressList;
foreach (IPAddress add in myIPAddress) Console.WriteLine(add);
//取得IP位址
string Address = "192.168.1.1";
Console.WriteLine("{0} 所對應的 主機名稱 如下 : ", Address);
IPHostEntry myHostName = Dns.GetHostEntry(Address);
Console.WriteLine(myHostName.HostName.ToString());
}
}
}如果有路徑需要組合,不需要透過字串組合,只要使用Path即可。
string PathStr = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "a.txt"); Console.WriteLine(PathStr);
//目前程式目錄
string ApplicationBase = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
//Windows目錄
string winDir = System.Environment.GetEnvironmentVariable("windir");
//桌面目錄
string folder = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
// 系統特殊目錄
// Environment.SpecialFolder
Desktop: C:\Documents and Settings\Administrator\桌面
Programs: C:\Documents and Settings\Administrator\「開始」功能表\程式集
Personal: D:\My Documents
Favorites: C:\Documents and Settings\Administrator\Favorites
Startup: C:\Documents and Settings\Administrator\「開始」功能表\程式集\啟動
Recent: C:\Documents and Settings\Administrator\Recent
SendTo: C:\Documents and Settings\Administrator\SendTo
StartMenu: C:\Documents and Settings\Administrator\「開始」功能表
MyMusic: D:\My Documents\My Music
DesktopDirectory: C:\Documents and Settings\Administrator\桌面
利用.Net 的 System.Net.NetworkInformation.Ping 測試網路是否正常!
System.Net.NetworkInformation.Ping NetPing = new System.Net.NetworkInformation.Ping();
System.Net.NetworkInformation.PingReply NetPingReply = NetPing.Send("168.95.1.1", 5000);
if(NetPingReply.Status == System.Net.NetworkInformation.IPStatus.Success)
{
MessageBox.Show("OK");
}
else
{
MessageBox.Show("ERROR");
}如下就能直接讀取File Upload 的檔案內容
StreamReader SR = new StreamReader(this.FI.PostedFile.InputStream, System.Text.Encoding.Default); string body = SR.ReadToEnd();
由於檔名部分只支援BIG5,所以要將HeaderEncoding改為BIG5即可!
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentType = "application/octet-stream";
Response.HeaderEncoding = System.Text.Encoding.GetEncoding("BIG5");
Response.AddHeader("content-disposition","attachment;filename=中文.doc");
Response.WriteFile(Server.MapPath("~/中文.doc"));
Response.End();
}