如题:
在程序的Server窗体中
public Server()
{
InitializeComponent();
//StartListen是自定义的一个开始监听的函数;
Thread Server_Thread=new Thread (new ThreadStart(StartListen));
Server_Thread.Start();
}
通过加断点发现:
序在初始化后运行完上面两行代码之后,有时不调用StartListen(),在执行完Server_Thread.Start()语句后直接跳出,有时是在StartListen()的下面红色的语句处直接跳出或死机,没有反映
private void StartListen()
{
TcpListener Server_Listener=new TcpListener(IPAddress.Any,Int32.Parse("51888"));
}
再帖,请教高手!!!
在程序的Server窗体中
public Server()
{
InitializeComponent();
//StartListen是自定义的一个开始监听的函数;
Thread Server_Thread=new Thread (new ThreadStart(StartListen));
Server_Thread.Start();
}
通过加断点发现:
序在初始化后运行完上面两行代码之后,有时不调用StartListen(),在执行完Server_Thread.Start()语句后直接跳出,有时是在StartListen()的下面红色的语句处直接跳出或死机,没有反映
private void StartListen()
{
TcpListener Server_Listener=new TcpListener(IPAddress.Any,Int32.Parse("51888"));
}
再帖,请教高手!!!
解决方案 »
- C#做一个IE按钮的Dll COM组件,点击弹出"HelloWorld"窗口——COM调用无效,求指点
- C#如何获取麦克风实时输入音量,并转换为百分比
- WCF和Socket的问题
- [求助]局域网数据访问
- C#有Listview的items.count发生变化的事件吗?
- Trouble opening project
- 询问网络高手,抓下来的网页HTML代码同IE打开所获得的HTML代码不一样
- 请问winxp下的文件夹支持放多少个文件,百万级的可以吗
- 急!!在一个机房内,有人将我共享文件夹内的内容全部删除了,如何把他揪出来?正义的人们帮帮我。。。。。
- 关于DevExpress GridView 筛选以后导出Excel 怎么记录筛选的条件,Web开发
- 如何让DataGridView的某一格设为DataGridViewComboBoxCell属性。而不用设置整个列为combox
- 一个excel中导出多个sheet的问题
设置断点的时候,我这里运行到StartListen()也会有点卡,但一会就好了,程序没有死。
而我从网上找的例子,一样的代码却能运行!
为什么!!!
难道是我写的建立线程那两行代码有误???
namespace GKNM_Server
{
public partial class Server : Form
{
private delegate void SetListBox(string str);//声明控件委托代理
private SetListBox setlistbox;//定义
private Socket Server_Socket;//服务器端套接字
private TcpListener Server_Listener;//服务器端监听
private NetworkStream Server_NetworkStream;//服务器端基于数据访问的基础数据流
//private StreamReader Server_sr;
//private StreamWriter Server_sw;
private Thread Server_Thread;//服务器端线程
private ArrayList Arraylist;//用于存放动态增加的连接对象
public Server()
{
InitializeComponent();
//Server_Thread = new Thread(new ThreadStart ( StartListen));
//Server_Thread.Start();
}
private void SetListB(string list)
{
listBox1.Items.Add(list);
}
private void StartListen()
{
string ll=string.Format("开始在{0}:{1}监听客户端连接", IPAddress.Any , Int32.Parse("51888"));
if (listBox1.InvokeRequired == false)
{
SetListB(ll);
}
else
{
this.Invoke(new SetListBox(SetListB), new object[] { ll});
}
Server_Listener = new TcpListener(IPAddress.Any, Int32.Parse("51888"));
Server_Listener.Start();//开始监听
while (true)
{
try
{
Server_Socket = Server_Listener.AcceptSocket();//接受挂起的来自客户端的连接请求
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
//每接受一个连接就创建一个对应的线程来循环接收该客户端发来的消息
//Thread tt = new Thread(new ThreadStart(ReceivedFromClient));
//tt.Start();
ReceivedFromClient();
}
}
//接收来自客户端的消息
private void ReceivedFromClient()
{
Socket ssss= Server_Socket;
try
{
if (ssss.Connected ==true )
{
Socket socket =ssss ;
//bool keepalive=true;
//while (keepalive )
//{
Byte[] buffer = new Byte[1024];
socket.Receive(buffer,buffer.Length ,0 );
string ClientsMessage = System.Text.Encoding.ASCII.GetString(buffer);
string[] messages = ClientsMessage.Split(new Char[] { '|' });
Console.WriteLine(messages); //判断消息类型
if (messages[0] == "CONN")
{
//Clients c = new Clients(messages[1], socket, Server_Thread);
//Arraylist.Add(c);string.Format("当前在线用户数:{0}", Arraylist.Count);
statusBar1.Text = "aaaa";
MessageBox.Show("修改TreeView状态");
}
if (messages[0] == "其他的...")
{ }
//}
}
}
catch (Exception ee)
{
Console .WriteLine (ee.ToString ());
}
}
{
InitializeComponent();
//Server_Thread = new Thread(new ThreadStart ( StartListen));
//Server_Thread.Start();
}
现在就是红色的这两行不执行,不能正常开始监听!!!
To:acqy
如果不调试线程,那怎么保证期待执行的线程已经执行了?
为什么会出现没有执行的情况??