Thread threadlistBox = new Thread(new ThreadStart(Addclient));
threadlistBox.IsBackground = true;
threadlistBox.Start(); //启动一个线程 用来在listBox中添加一行数据
void Addclient()
{
while (true)
{
if (Add && str != null)
{
Add = false;
listBox1.Items.Add(str);
}
Thread.Sleep(100); } }
// 在另一个监听线程中也访问了Add全局变量 这样会出现问题 希望指教怎么改??
alSock.Add(sockets[i]);
str=((IPEndPoint)sockets[i].RemoteEndPoint).Address.ToString() +" 端口 "+ ((IPEndPoint)sockets[i].RemoteEndPoint).Port.ToString();
Add = true;
threadlistBox.IsBackground = true;
threadlistBox.Start(); //启动一个线程 用来在listBox中添加一行数据
void Addclient()
{
while (true)
{
if (Add && str != null)
{
Add = false;
listBox1.Items.Add(str);
}
Thread.Sleep(100); } }
// 在另一个监听线程中也访问了Add全局变量 这样会出现问题 希望指教怎么改??
alSock.Add(sockets[i]);
str=((IPEndPoint)sockets[i].RemoteEndPoint).Address.ToString() +" 端口 "+ ((IPEndPoint)sockets[i].RemoteEndPoint).Port.ToString();
Add = true;
解决方案 »
- DataGridView控件标记列隐藏
- "SA系统"是指明什么系统?
- 这样给数组赋值正确吗?
- 邮件的标题和内容部份中文都是用的 bit8 进行编码 如果对中文字符进行解码,在线?(100)
- 哪位有Excel文件导入数据库的例子?
- 用C#能否编写静态链接库?或是C#编写的动态链接库能否实现静态库的功能。
- 在线征求:C#数据库三层架构的应用程序设计的实例代码!!谢谢
- aspx bs开发各客户端之间如何实现点对点通讯?
- 在C#.NET中如何使用水晶报表?????????请大侠们帮忙!!!!!!
- ComboBox控件如果让它不可输入,只能选择呀!
- 菜鸟问题?如何在Panel中画线????
- 如何弹出对话框?分不多,但会很快结贴
{
while (true)
{
if (ttt)
{
ttt = false;
break;
}
else
{
try
{ //通过组合服务的主机 IP 地址和端口号,IPEndPoint 类形成到服务的连接点。
listeningSocket.Listen(10); //监听端口,等待客户端连接请求。10是队列中最多可容纳的等待接受的传入连接数
statusBar1.Text = "主机" + txtServer.Text + "端口" + txtPort.Text + "开始监听.....";
alSock = new ArrayList();
//Accept 以同步方式从侦听套接字的连接请求队列中提取第一个挂起的连接请求,然后创建并返回新的 Socket。
sockets[i] = listeningSocket.Accept();
// mySocket = sockets[i];
alSock.Add(sockets[i]);
str=((IPEndPoint)sockets[i].RemoteEndPoint).Address.ToString() +" 端口 "+ ((IPEndPoint)sockets[i].RemoteEndPoint).Port.ToString();
listBox1.Items.Add(str);
//Add = true;
// Addclient(sockets[i]);
// listBox1.Items.Add(((IPEndPoint)sockets[i].RemoteEndPoint).Address.ToString() +" 端口 "+ ((IPEndPoint)sockets[i].RemoteEndPoint).Port.ToString());
// if (sockets[i].Connected)
//ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc));
// MessageBox.Show("I am connected to " + IPAddress.Parse(((IPEndPoint)mySocket.RemoteEndPoint).Address.ToString()) + " on port number " + ((IPEndPoint)mySocket.RemoteEndPoint).Port.ToString());
i = i + 1;
}
catch (Exception ee)
{
statusBar1.Text = ee.Message; }
}
} }
{
DateTime CurrentTime = DateTime.Now;
if (this.EventlistView.InvokeRequired)
{
//OutDelegate d = new OutDelegate(OutEventLog);
this.BeginInvoke(new OutDelegate(OutEventLog), text, IconFlag);
}
else
{
Monitor.Enter(EventlistView);
//if (OutLog.Items.Count > 2) // OutLog.Clear();
if (EventlistView.Items.Count > 10)
{
EventlistView.Items .Clear();
}
EventlistView.Items.Add(text,flag);
Monitor.Exit(EventlistView);
}
}给你参考下,线程间调用FORM是要BeginInvoke的,建议去看下老外写的进度条算pi的程序
多线程里面怎么用lock ??