c#基础: 线程的初级用法总结

时间:2024-09-08 13:04:38

启动一个线程的两种方法:

    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释放资源,否则会造成资源无法释放