●●●●一个很简单.但估计你也不会的问题●●●●

hyy567 2009-04-17 03:11:04
一个看次简单,但有点难的问题,
本段代码是一个多线程端口通讯的程序.
问题不是端口通讯 也不是多线城的问题,这些我都做出来了.
问题是按了监听 按钮 也就是(Button1)
我本意是要这Button1隐藏,可老是隐藏不了.
望大侠们告之! 多谢

请大家测试了再发贴,别乱说哦。

代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.IO;

public partial class Admin_Info_AddInfo : PageBase
{
public static TcpListener myList;
public static Socket s;
protected void Page_Load(object sender, EventArgs e)
{

}

//启动程序
public void Fist()
{

int prot = Convert.ToInt32(this.TextBox1.Text.Trim());
try
{
IPAddress ipAd = IPAddress.Parse(Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString());
myList = new TcpListener(ipAd, prot);
myList.Start();
while (true)
{
s = myList.AcceptSocket();
AcceptSocketClass accept = new AcceptSocketClass(s);
accept.StartThread();
}
}
catch (Exception e)
{
this.Label1.Text = e.Message;
}
}




//监听程序
public class AcceptSocketClass
{
public static int times = 0;
Socket socket;
public AcceptSocketClass(Socket s)
{
socket = s;
}
public void StartThread()
{
byte[] b = new byte[1024];
int k = socket.Receive(b);
if (k > 0)
{
string str = Convert.ToString(Encoding.BigEndianUnicode.GetString(b, 0, k));
//写入数据库
int nmuber = str.LastIndexOf("#");
if (nmuber > 0)
{
//数据库操作
}
else
{
//数据库操作
}
Thread td = new Thread(new ParameterizedThreadStart(DoAction));
td.Start(times);
times++;
}
}
private void DoAction(object t)
{
Thread.Sleep(10000);
ASCIIEncoding asen = new ASCIIEncoding();
socket.Send(asen.GetBytes("The" + ((int)t + 1).ToString() + "th string was Echoed by the server."));
Thread.CurrentThread.Abort();
}
}



protected void Button1_Click(object sender, EventArgs e)
{
this.Button1.Visible = false;
Fist();
}
}
...全文
129 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenkekenihao 2009-04-17
  • 打赏
  • 举报
回复
我猜是Fist(); 中有问题导致页面的生命周期未执行完毕
注释它再试一下
hyy567 2009-04-17
  • 打赏
  • 举报
回复
我想应该也是这样的.应该也是线程 没跑完
Lxpd 2009-04-17
  • 打赏
  • 举报
回复
你的监听无限的运行这,这个页面就永远执行不完,所以button不能消失,因为一次请求没有回来呢,
想让它没,你可以新开一个线程去监听;

Thread thThreadRead = new Thread(new ThreadStart(Fist));
thThreadRead.Start();//启动线程
Allen_Chen_ 2009-04-17
  • 打赏
  • 举报
回复
加个static的全局bool表示button已经点了。在button click事件处理里改变这变量。在Page_Load里检查这变量然后设置button的Visible
hyy567 2009-04-17
  • 打赏
  • 举报
回复
没人知道吗?????????
hyy567 2009-04-17
  • 打赏
  • 举报
回复
不会的。我就是要无限的监听端口.
除非线程暂停!
vrhero 2009-04-17
  • 打赏
  • 举报
回复
还有一种东西叫干嘛干嘛
--------------
还有一种东西叫该干嘛干嘛
vrhero 2009-04-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 keystudio 的回复:]
有一种东西叫js
[/Quote]
还有一种东西叫干嘛干嘛...Web页面上出现这种代码...懒得说了...
xiaping0414 2009-04-17
  • 打赏
  • 举报
回复
你那个while(true)不会死循环吗?
keystudio 2009-04-17
  • 打赏
  • 举报
回复
有一种东西叫js
hyy567 2009-04-17
  • 打赏
  • 举报
回复
2楼的兄弟,你看清楚我代码再说了哦.
你以为我不知道button1.Visible = false;?

hyy567 2009-04-17
  • 打赏
  • 举报
回复
没办法.项目是Web的.
命苦啊!
kkun_3yue3 2009-04-17
  • 打赏
  • 举报
回复
晕倒...我在CS下面做的测试...
kkun_3yue3 2009-04-17
  • 打赏
  • 举报
回复
        private void button1_Click( object sender, EventArgs e ) {
button1.Visible = false;
}

刚刚测试的,没有问题呀,完全可以隐藏
你先把Fist(); 这一行注释掉,不知道它里面做了些什么,为不影响测试结果,楼主再试下
沉序员 2009-04-17
  • 打赏
  • 举报
回复
你是牛還在WEB上監聽

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧