.NET线程方法:Thread.Start()与ThreadPool.QueueUserWorkItem()

.NET提供了几种创建线程并启动它的方法。那么,有两种方法(基本上):

(1)使用System.Threading.Thread类。

Thread curr = new Thread(myfunction); 
curr.Start(new Object()); 

(2) 使用System.Threading.ThreadPool类。

  1.不带参数

ThreadPool.QueueUserWorkItem(delegate { PostDataWhenLoadData(); });

private void PostDataWhenLoadData()

{

               BehaviorReturn br = _reService.SearchPrintReport(currentSo, isCount);
                if (br.Success)
                {
                    SysnAssignWhenLoad(br.ObjectList);
                    if (br.ObjectList.Count == 0)
                    {
                        var srMsg = new ServerMessage
                        {
                            code = "noData",
                            messageCN = "没有满足查询条件的数据"
                        };
                        br.MessageList.Add(srMsg);
                        SysnShowError(br);
                    }
                }
                else
                {
                    SysnShowError(br);
                }

}

     2.带参数

        string ti = "";
        ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc),ti); (参数ti可以为任何类型)

        private void ThreadProc(object ti)   //回调函数 中参数类型一定要写出成object
        {
           
        }

总结一下:

  • 创建线程需要很大的开销。
  • Thread是创建新的线程,而ThreadPool是从线程池中重用被挂起的闲置线程,减少了创建线程的开销。
  • 使用ThreadPool的线程时,这些线程由系统管理。
  • 对于多次小任务,更适合使用线程池。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值