压缩 :using System.IO;using System.IO.Compression;……………………………………… public byte[] Zip(byte[] byteArray) //压缩方法 ...{ MemoryStream memoryStream = new MemoryStream(); DeflateStream deflateStream = new DeflateStream(memoryStream, CompressionMode.Compress,false); deflateStream.Write(byteArray, 0, byteArray.Length); deflateStream.Close(); return memoryStream.ToArray(); } public byte[] Dezip(byte[] byteArray) //解压缩方法 ...{ MemoryStream memoryStream = new MemoryStream(byteArray); 这节主要是要获取解压后的大小, 要改进#region 这节主要是要获取解压后的大小, 要改进 DeflateStream deflateStreamSize = new DeflateStream(memoryStream, CompressionMode.Decompress,false); int i = new int(); i = 0; while (deflateStreamSize.ReadByte() != -1) ...{ i = i + 1; } #endregion byte[] dezipArray = new byte[i]; memoryStream.Position = 0; //将流的位置重新移到开始位置 DeflateStream deflateStream = new DeflateStream(memoryStream, CompressionMode.Decompress, false); deflateStream.Read(dezipArray, 0, dezipArray.Length); deflateStream.Close(); return dezipArray; } private void button1_Click(object sender, EventArgs e) ...{ OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.ShowDialog(); openFileDialog.Multiselect = false; if (!string.IsNullOrEmpty(openFileDialog.FileName)) ...{ //下面可改为取出已压缩好的字节数组解压缩之后,保存; byte[] byteArray =File.ReadAllBytes(openFileDialog.FileName); byte[] zipByte=Zip(byteArray); byte[] deZipByte=Dezip(zipByte); MessageBox.Show("compression before: " + (byteArray.Length / 1024).ToString() + " " + "compression after: " + (tempByte.Length / 1024).ToString()+" " + "Decompression after: " + (detempByte.Length/1024).ToString()); File.WriteAllBytes(@"c:a.zip", zipByte); //保存压缩后的文件 File.WriteAllBytes(@"c:a.xlt", deZipByte); //保存解压缩后的文件 } }线程调用和绘图:在创建托管的线程时,在该线程上执行的方法将通过一个传递给 Thread 构造函数的 ThreadStart 委托或 ParameterizedThreadStart 委托来表示。在调用 System.Threading.Thread.Start 方法之前,该线程不会开始执行。执行将从 ThreadStart 或 ParameterizedThreadStart 委托表示的方法的第一行开始。区别是ThreadStart执行不带参数的委托方法, ParameterizedThreadStart执行带参数的委托方法。A. ThreadStart执行不带参数的委托方法实例:using System.Drawing.Drawing2D;using System.Threading;……………………………………….. private void button3_Click(object sender, EventArgs e) ...{ //调用线程 Thread thread = new Thread(new ThreadStart(this.BrushRectangle)); //如果线程中的方法有使用到多线程,如openFileDialog.ShowDialog();则必须在线程开始前将线程设为单线程; thread.SetApartmentState(ApartmentState.STA); // ApartmentState.STA 单线程, ApartmentState.MTA 多线程 thread.Start(); } public void BrushRectangle() //绘图 ...{ int x; int y; int width; int height; Rectangle rectangle = new Rectangle(10, 10, 450, 25); LinearGradientBrush rectangleBrush = new LinearGradientBrush(rectangle, Color.AliceBlue, Color.CornflowerBlue, LinearGradientMode.ForwardDiagonal); Pen rectanglePen = new Pen(rectangleBrush); Graphics g = this.CreateGraphics(); x=rectangle.X; y=rectangle.Y; width=rectangle.Width/100; height=rectangle.Height; for (int i = 1; i <= 100; i++) ...{ g.FillRectangle(rectangleBrush, x * i, y, width, height); Thread.Sleep(50); } MessageBox.Show("Ok"); //下面演示如何生成图片的缩略图; System.Drawing.Image image = System.Drawing.Image.FromStream(FileUpload1.PostedFile.InputStream, true, true); Bitmap myBitmap = new System.Drawing.Bitmap(image); Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback); Image myThumbnail = myBitmap.GetThumbnailImage(40, 40, myCallback, IntPtr.Zero); Graphics g = this.CreateGraphics(); g.DrawImage(myThumbnail, 250, 175); }B.ParameterizedThreadStart执行带参数的委托方法的实例:using System;using System.Threading;public class Work...{ public static void Main() ...{ // To start a thread using a shared thread procedure, use // the class name and method name when you create the // ParameterizedThreadStart delegate. // Thread newThread = new Thread( new ParameterizedThreadStart(Work.DoWork)); // Use the overload of the Start method that has a // parameter of type Object. You can create an object that // contains several pieces of data, or you can pass any // reference type or value type. The following code passes // the integer value 42. // newThread.Start(42); // To start a thread using an instance method for the thread // procedure, use the instance variable and method name when // you create the ParameterizedThreadStart delegate. // Work w = new Work(); newThread = new Thread( new ParameterizedThreadStart(w.DoMoreWork)); // Pass an object containing data for the thread. // newThread.Start("The answer."); } public static void DoWork(object data) ...{ Console.WriteLine("Static thread procedure. Data='{0}'",data); } public void DoMoreWork(object data) ...{ Console.WriteLine("Instance thread procedure. Data='{0}'",data); }}/**//* This code example produces the following output (the order of the lines might vary):Static thread procedure. Data='42'Instance thread procedure. Data='The answer'*/发送邮件:using System.Net.Mail;…………………… try ...{ MailAddress mailAddressFrom = new MailAddress("your mail address"); MailAddress mailAddressTo = new MailAddress("your mail address"); MailMessage mailMessage = new MailMessage(mailAddressFrom, mailAddressTo); mailMessage.Body = "This is Mail Body!"; mailMessage.Subject = "This is Mail Subject!"; //增加附件; OpenFileDialog of = new OpenFileDialog(); of.Multiselect = true; of.ShowDialog(); if (of.FileNames.Length >0) ...{ foreach (string filename in of.FileNames) ...{ Attachment at = new Attachment(filename); mailMessage.Attachments.Add(at); } } SmtpClient smtpClient = new SmtpClient("smtp name"); smtpClient.Credentials = new System.Net.NetworkCredential("username", "your password"); smtpClient.Send(mailMessage); MessageBox.Show("Send Mail Successfully!"); } catch(SmtpException ex) ...{ throw new Exception(ex.StatusCode.ToString()); }对象管理:using System.Management;……………………… //列出所有服务 ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * from win32_service where State='Running'"); listBox1.Items.Clear(); foreach (ManagementObject svc in searcher.Get()) ...{ listBox1.Items.Add(svc["DisplayName"].ToString()); }读取系统日志:using System.Diagnostics;…………………….. EventLog eventLog = new EventLog("Application", "."); foreach (EventLogEntry eventLogEntry in eventLog.Entries) ...{ if (eventLogEntry.Source == "MSSQLServer") ...{ if (eventLogEntry.EntryType == EventLogEntryType.Error || eventLogEntry.EntryType == EventLogEntryType.Warning) ...{ listBox1.Items.Add(eventLogEntry.Message); } } }获取网络及驱动器信息:using System.IO; //驱动器using System.Net.NetworkInformation; //网络……………………… listBox1.Items.Clear(); DriveInfo[] driveInfoArrary = DriveInfo.GetDrives(); foreach (DriveInfo driveInfo in driveInfoArrary) ...{ listBox1.Items.Add(driveInfo.Name); } NetworkInterface[] networkInterfaceArray = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface networkInterface in networkInterfaceArray) ...{ listBox1.Items.Add(networkInterface.Name + "{" + networkInterface.GetIPv4Statistics().BytesReceived.ToString() + "}"); }DLL调用:using System.Runtime.InteropServices;…………………………………………….. // CharSet=CharSet.Unicode表示传输字符的格式,不加将会出现乱码 [DllImport("User32.dll",CharSet=CharSet.Unicode)] public static extern int MessageBoxW(int h, string m, string c, int type); …………………………………. private void button1_Click(object sender, EventArgs e) ...{ MessageBoxW(0, "显示消息的地方", "主题", 0); }正则表达式调用实例: private bool IsInteger(string strNumber) ...{ Regex objNotIntPattern = new Regex("[^0-9-]"); Regex objIntPattern = new Regex("^-[0-9]+$|^[0-9]+$"); return !objNotIntPattern.IsMatch(strNumber) && objIntPattern.IsMatch(strNumber); }