c# 窗体 数据库 连接 假死
7个回答
展开全部
用异步查询,也就是多线程,不然会使界面假死。
也可以用backgroundWorker控件,会容易点。
也可以用backgroundWorker控件,会容易点。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
以前遇到过类似情况,根本原因就是没有使用多线程。窗体程序是基于消息映射机制的,需要一个主线程来维持窗体上的消息响应,当你的程序执行到Listen方法时,即转入侦听程序也就类似于循环等待,所以窗体不响应,因为主线程去侦听去了,没有别的线程来维持窗体的消息映射,所以窗体陷入假死状态,即没有响应,当client程序连接到服务器之后,listen方法得到返回值,即可以继续执行,所以 窗体开始响应。至于你说的实现循环监听,实质上也就是在服务端获取客户端套接字之后 设置一个while语句来循环接收客户端发来的信息并显示。当然首先你要做的就是采用多线程机制,这个是最重要的!不知道我说清楚没有...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个是使用单线程的原因,我推荐你加个线程在后台执行获取数据库,具体怎么做网上有很多而且很长,就不说了
还有种比较水的方法是每执行一条用application.doevent()让主线程刻意刷新界面
还有种比较水的方法是每执行一条用application.doevent()让主线程刻意刷新界面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用多线程:
把获取数据、绑定的操作,放到一个单独的函数里,比如void myFunc()
然后在Form1_Load里,使用以下代码进行调用:
System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(geth));
th.Start();
这样,就不会假死啦。
把获取数据、绑定的操作,放到一个单独的函数里,比如void myFunc()
然后在Form1_Load里,使用以下代码进行调用:
System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(geth));
th.Start();
这样,就不会假死啦。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-01-27
展开全部
把取数据绑定界面的操作放到一个新线程去进行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
开新线程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询