启动一个线程的两种方法:
a、使用无参的方法
Thread thread1 = new Thread(new ThreadStart("调用的方法名"));
thread1.Start();
// 调用此方法的线程上会抛出ThreadAbortException异常
thread1.About();
b、使用有参的方法
Thread thread2 = new Thread(new ParameterizedThreadStart("调用的方法名"));
// IsBackground --> 获取或设置一个值,该值指示某个线程是否为后台线程
thread2.IsBackground = true;
thread2.Start();
异步线程的使用 :
普通线程如果假死,会导致程序阻塞,可以用异步线程解决这个问题,CLR提供了很多方法,如FileStream的BeginRead和EndRead方法,HttpWebRequest的BeginGetResponse方法和EndGetResponse方法,
如下为HttpWebRequest的使用示例:
private void TestHttpRequest()
{
HttpWebRequest req = WebRequest.Create("http://www.baidu.com") as HttpWebRequest;
req.BeginGetResponse(new AsyncCallback(ResponseCallback), req);
}
private void ResponseCallback(IAsyncResult ia)
{
HttpWebRequest req = ia.AsyncState as HttpWebRequest;
HttpWebResponse res = req.EndGetResponse(ia) as HttpWebResponse;
Console.WriteLine(res.ContentLength);
}
// 调用了Begin后 应该在适当的时候调用End释放资源,否则会造成资源无法释放