标题:关于SWT线程的问题,急
只看楼主
kuito2004
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-9-28
 问题点数:0 回复次数:2 
关于SWT线程的问题,急
我在做服务器侦听现成时候遇到的错误: 下面是我部分的源代码那位大大帮我看下 (前台) …… LinkClientThread link; link=new LinkClientThread(this); final ServerSocket nServer=server; (new Thread(){ public void run(){ link.start(nServer); } } ).start(); …… (后台) public class LinkClientThread { private ServerInterface gui; private Node client; public LinkClientThread(ServerInterface siGUI){ this.gui=siGUI; } public void start(ServerSocket server){ while(!server.isClosed()){ try{ client=new Node(); client.Socket=server.accept(); client.output=new ObjectOutputStream(client.Socket.getOutputStream()); client.output.flush(); client.input=new ObjectInputStream(client.Socket.getInputStream()); client.username=(String)client.input.readObject(); } catch(Exception e){} } } } ………… 红色的地方就是出错的地方 出错原因分别是:构造函数 LinkClientThread(<SelectionAdapter 的匿名子类>)未定义 和不能引用其它方法中定义的内部类中的非终态变量 link 我不知道为什么会有这个错,同样差不多的线程书上就没错
搜索更多相关主题的帖子: 线程 SWT 
2005-09-28 16:55
kuito2004
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-9-28
得分:0 
第一个问题我解决了,我把LinkClientThread link; link=new LinkClientThread(this);两句并在一起放在了主方法外,但又有新问题了,link.start(nServer);成了非静态变量的静态引用了,如果把LINK改成静态那THIS就会出错,请问这要怎么解决
2005-09-28 17:12
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 
LinkClientThread link;
final ServerSocket nServer=server;
link=new LinkClientThread(this, nServer);
link.start();

// maybe some time later
// if(some condition is true)
// {
//   link.stop();
// }
……
(后台)

public class LinkClientThread implements Runnable
{
  private ServerInterface gui;
  private ServerSocket server;
  private Node client;
  private Thread thread;

  public LinkClientThread(ServerInterface siGUI, ServerSocket server)
  {
    gui=siGUI;
    this.server = server;
  }
  public void start()
  {
    thread = new Thread(this);
    thread.setName("LinkClientThread");
    thread.start();
  }
  public void stop()
  {
    thread = null;
  }
  public void run()
  {
    while(!server.isClosed() &amp;&amp; thread != null)
    {
      try
      {
        client=new Node();
   
        client.Socket=server.accept();
        client.output=new ObjectOutputStream(client.Socket.getOutputStream());
        client.output.flush();
        client.input=new ObjectInputStream(client.Socket.getInputStream());
        client.username=(String)client.input.readObject();
      }
      catch(Exception e){}
    }
  }
}

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-29 09:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-28927-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.130415 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved