• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
keerting
博客园    首页    新随笔    联系   管理    订阅  订阅
基于tcp开发—多线程

多线程问题:多线程过程的参数与返回值

在基于控件开发多线程应用过程中要分清各自的线程,ui线程控制响应用户操作和界面变化,如果用ui线程执行其他操作,那么界面接回卡住。那么其他操作就应该另启线程进行运行,然而线程之间经常需要参数传递,比如把其他操作的参数显示到界面上,这时就要搞清楚什么操作由哪条线程控制。

在多线程应用程序中提供和返回值是很复杂的,因为必须将对某个过程的引用传递给线程类的构造函数,该过程不带参数也不返回值。

为多线程过程提供参数 :

为多线程方法调用提供参数的最好办法是将目标方法包裹在类中,并为该类定义字段,这些字段将被用作新线程的参数。这种方法的优点是,任何时候想要启动新线程,都可以创建类的新实例,该实例带有自身的参数。如

Socket client=xxx;

ClientThread newclient= new ClientThread(client);

Thread newthread= new Thread(new ThreadStart(newclient.ClientService));

//这里可以对多线程自带参数初始化,也可以在类构造函数中初始化

newthread.Start();

class ClientThread{

//放置线程自带参数

public Socket service;

public ClientThread(Socket clientsocket)

 {

  //把传进来的参数对象传给自带参数

  This.service=clientsocket;

  }

}

 

从多线程过程返回值:

返回值的方法一共有四种(来自百度)最简单的是使用 BackgroundWorker 组件来管理线程,在任务完成时引发事件,然后用事件处理程序处理结果。如果要对多线程进行更细致的控制,就要用Thread

posted on 2012-02-08 16:13  keerting  阅读(487)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3