📄 talker.cs
字号:
namespace RemotingChat
{
using System;
using System.Threading;
using System.Collections;
/// <summary>
/// Summary description for Talker.
/// </summary>
public class Talker
{
private ObjectList messages = new ObjectList();
private Chat c;
bool isActive = true;
private String name;
private Thread t=null;
public Talker(Chat c,String name) {
this.c = c;
this.name=name;
t=new Thread(new ThreadStart(this.run));
t.Start();
}
public bool addMessage(Message e){
if(!isActive)
return false;
messages.Add(e);
if(t.ThreadState==ThreadState.Suspended)
{
t.Resume();
}
return true;
}
public void run()
{
while(true)
{
try
{
if(messages.Count==0)
t.Suspend();
c.chatNotify((Message)messages[0]);
messages.RemoveAt(0);
}
catch (ArgumentOutOfRangeException e)
{
Console.WriteLine("postMessage: " + e);
}
catch (Exception e)
{
//Some Error when more than one Client is connected.
Console.WriteLine("Removing "+ name + "\n" + e);
isActive=false;
t.Abort();
}
}
}
public String getChatterName() {
return name;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -