📄 servertalker.cs
字号:
namespace RemotingChat
{
using System;
using System.Threading;
using System.Collections;
/// <summary>
/// Summary description for ServerTalker.
/// </summary>
/// Threading
public class ServerTalker
{
private ObjectList messages = new ObjectList();
private ChatServerImpl cs;
private Thread t=null;
public ServerTalker(ChatServerImpl cs, String name) {
this.cs = cs;
//Send a welcome message
messages.Add(new
Message("***", name + " just connected***"));
t=new Thread(new ThreadStart(this.run));
t.Start();
}
public bool addMessage(Message e){
if(cs==null) {
Console.WriteLine("Server reference is null");
return false;
}
t.Resume();
messages.Add(e);
return true;
}
public void run()
{
while(true)
{
try
{
if(messages.Count==0)
t.Suspend();
if(t.ThreadState==ThreadState.Running)
{
Console.WriteLine("First Element {0}",messages[0]);
cs.postMessage((Message)messages[0]);
messages.RemoveAt(0);
}
}
catch (Exception e)
{
Console.WriteLine("Remote Error: Server down?"+ e);
cs = null;
t.Abort();
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -