进程、应用程序域(AppDomain)、线程之间的关系


进程 > 应用程序域(AppDomain) > 线程


一个进程可以有多个应用程序域;一个应用程序域可以执行多个线程,但同一时间线程只能在一个应用程序域中执行。




创建一个进程:

      启动一个chrome浏览器,打开黑马的首页:

        static void Main(string[] args)
        {
            //启动ie
            Process process = Process.Start("chrome.exe","http://edu.csdn.net");
        }

干掉一个进程:

     启动几个ie浏览器,执行以下代码,会关闭所有的ie浏览器

        static void Main(string[] args)
        {
            Process[] process = Process.GetProcessesByName("iexplore");   //获取ieplore的进程关联
            foreach (Process item in process)
            {
                item.Kill();       //立即停止关联的进程
            }   
        }

启动一个不带参数的线程:

 线程  Thread thread = new Thread(ThreadStart start)     参数为ThreadStart

          public delegate void ThreadStart();   而ThreadStart是一个无参的委托,所以上面的参数可以把一个方法传递过去

          new Thread(DoWord) ...

     终止一个线程

       thread.Abort();

        static void Main(string[] args)
        {
            Thread mainThread = Thread.CurrentThread;   //这是主线程


            Thread thread = new Thread(new Thread(DoWork));    //启动一个子线程,参数为ThreadStart
            thread.Start();
            int num = 0;
            while (num < 5)
            {  
                Console.WriteLine("这是主线程,ID:{0}", mainThread.ManagedThreadId);
                num++;
                Thread.Sleep(1000);
            }


        }
        static void DoWork()     //子线程执行的方法
        {


            while (true)
            {
                Console.WriteLine("这是子线程{0}在干活", Thread.CurrentThread.ManagedThreadId);
                Thread.Sleep(1000);
            }
        }

输出:

启动一个带参数的线程:

 线程  Thread thread = new Thread(ParameterizedThreadStart start)     参数为ParameterizedThreadStart

public delegate void ParameterizedThreadStart(object obj);   我们要把这样一个委托作为参数传递

        static void Main(string[] args)
        {
            //ParameterizedThreadStart parStart = new ParameterizedThreadStart(DoWork);
            Thread thread = new Thread(new ParameterizedThreadStart(DoWork));    //启动一个子线程,参数为ThreadStart
            thread.Start(10);

        }
        static void DoWork(object a)     //子线程执行的方法
        {

            while (true)
            {
                Console.WriteLine("这是子线程{0}在干活,值:{1}", Thread.CurrentThread.ManagedThreadId, a);
                Thread.Sleep(1000);
            }
        }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值