TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
JR
NA
16
32.8k
Form thread seems to hang, maybe a threading problem?
Sep 28 2011 4:39 PM
Hello,
I am building a server class but I have some difficulties.
When I declare the server in form_load, the form is shown but hangs....
--------------------------------------------------------------------
Server code:
[CODE]
class ServerThreadPool
{
//Declaration of the TcpListener
private TcpListener client;
//Constructor
public ServerThreadPool()
{
IPEndPoint IpAdress = new IPEndPoint(IPAddress.Any, 8000);
client = new TcpListener(IpAdress);
client.Start();
Trace.WriteLine("Waiting for clients...");
while (true)
{
while (!client.Pending())
{
Thread.Sleep(1000);
}
ConnectionThread newconnection = new ConnectionThread();
newconnection.threadListener = this.client;
ThreadPool.QueueUserWorkItem(new WaitCallback(newconnection.HandleConnection));
}
}
}
class ConnectionThread
{
public TcpListener threadListener;
private static int connections = 0;
public void HandleConnection(object state)
{
int recv;
byte[] data = new byte[1024];
TcpClient client = threadListener.AcceptTcpClient();
NetworkStream ns = client.GetStream();
connections++;
Trace.WriteLine(connections, "New client accepted: active connections");
string welcome = "Lets get rocking :) ";
data = Encoding.ASCII.GetBytes(welcome);
ns.Write(data, 0, data.Length);
while (true)
{
data = new byte[1024];
recv = ns.Read(data, 0, data.Length);
if (recv == 0)
break;
ns.Write(data, 0, recv);
}
ns.Close();
client.Close();
connections = connections - 1;
Trace.WriteLine(connections, "Client disconnected: active connections");
}
}
[/CODE]
_______________________________________________________________________
Form code:
public partial class serverUI : Form
{
public serverUI()
{
InitializeComponent();
}
private void serverUI_Load(object sender, EventArgs e)
{
ServerThreadPool STP = new ServerThreadPool();
}
}
__________________________________________________________________________
This code is taken from a console program and I think I know what is causing the problem:
It looks like the STP is started on the form thread, because STP enters an endless loop, the form does not respond anymore.
How can I start the server (client.pending on its own thread)?
Or is there something else wrong?
thanks in advance.
BTW: How can I format code the right way (in a block)?? I've tried [code] and [/code] but this does not work.
Reply
Answers (
1
)
How to pass the values from one xap file to another xap while redirecting
WCF and Silverlight