压缩 :
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);
}
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);
}