class Connection
{
public int SERVERID;
private Thread connection;
public Connection()
{
connection = new Thread(new ThreadStart(this.Run));
}
public void Start(int serverid)
{
SERVERID = serverid;
connection.Start();
}
void Run()
{
while(true)
{
//do stuff here
}
}
}
现在,有一个我需要管理的课程,这就是我怎么称呼它:
static void Main(string[] args)
{
StartConnection(1);
StartConnection(2);
StartConnection(3);
//etc
}
static void StartCOnnection(int serverid)
{
Connection connect = new Connection();
connect.Start(serverid);
}
我原本试图做这样的事情:
foreach(Connection connect in Connection)
{
if(connect.SERVERID == 2)
{
//destroy the thread, and class.
}
}
但是得到错误“'连接'是'类型'但是像'变量'一样使用 “,我不知道怎么做才能破坏线程和类部分......
要点: 所以我基本上需要做的是获取所有开放的Connetion类的列表,并且能够基于类的设置能够销毁它。我该怎么做呢?
〜代码示例
答案 0 :(得分:3)
你没有说出你遇到了什么样的错误。这可能有所帮助。也;您可能希望在连接上添加一个类似于以下内容的停止方法:
public void Stop()
{
if (this.connection.IsAlive)
{
this.stopCondition = true;
this.connection.Join();
}
}
其中stopCondition是在while循环中检查的类成员(而不仅仅是'true')。
答案 1 :(得分:1)
Main()中的代码将无法编译。
您需要以下内容:
List<Connection> connections = new List<Connection> ();
Connection connect;
connect = new Connection();
connect.Start(1);
connections.Add(connect);
connect = new Connection();
connect.Start(2);
connections.Add(connect);
// etc
然后你可以稍后做:
foreach(Connection connect in connections)
{
if(connect.SERVERID == 2)
{
//destroy the thread, and class.
}
}
对于实际停止,我同意SnOrfus的回答。你需要构建一些逻辑来打破while循环。