[吐槽]总有那么些误人子弟的在混分

dodducs 2012-08-14 02:06:30
最近脾气有点暴躁。所以说话比较冲。
但是那些个为了混点儿分就胡乱回答问题的人,你们这不是误人子弟么?

http://topic.csdn.net/u/20120814/09/c63ff24d-cf48-4991-b55c-818a62946aef.html?seed=1336649828&r=79400711#r_79400711

详见此贴。
都是些什么人。

问题:
public partial class Form1 : Form
{
public bool truth=true;\\用来停止循环
public Form1()
{
InitializeComponent();
}
public void choujiang()\\抽奖函数(随机跑动待投奖人员,按ENTER停止)
{
while(truth)
{
Random ran = new Random();
label1.Text = ran.Next(1, 100).ToString();
}

}

private void button2_Click(object sender, EventArgs e)\\执行抽奖函数
{
choujiang();
}

private void button2_KeyUp(object sender, KeyEventArgs e)\\传值令抽奖函数停止
{
if (e.KeyCode == Keys.Enter)
{
truth=false;
}
else
{
truth=true;
}
}
}


1楼

while(truth) 这是死循环啊   
改为if(truth)吧



3楼

while(truth)
{
Random ran = new Random();
label1.Text = ran.Next(1, 100).ToString();
}

死循环了。


6楼

while(truth)循环退不出



其中还有几颗星的我就不说什么了。
能不能有点儿节操,能不能啊。
能不能有点儿责任心,能不能啊。
能不能有点儿羞耻心,能不能啊。(这个主要送给1楼那家伙,居然后来又跟我争论起来,MD)


乌烟瘴气,乌烟瘴气,乌烟瘴气。。

好了,发完牢骚了。。哎
...全文
777 65 打赏 收藏 转发到动态 举报
写回复
用AI写文章
65 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼主火气大了点,在这么个和谐的地方一定要低调,低调。
总是说回答问题的不好什么的,下次你就该吐槽问问题的了,百度一下一片一片的答案非得在这里发个帖子等人回答
风吹腚腚凉 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]
引用 15 楼 的回复:

引用 12 楼 的回复:

引用 9 楼 的回复:
while(truth)
{
Sleep(1);
Random ran = new Random();
label1.Text = ran.Next(1, 100).ToString();
}

循环最好加个 Sleep();


是,加sleep可以看的更清楚一点。
不过话说回来,这题……
[/Quote]
连这种问题都看不明白的人你跟他讲UI他就明白了?
你不如把代码给他写出来他才能看懂,别以为你说对了,他就能理解
你跟别人的争论并不能解决当前楼主的困惑。
l4kangaxx 2012-08-15
  • 打赏
  • 举报
回复
不太明白,从代码上来看,因为没有另开线程,所以的确是死循环了吧,我感觉button2点不下去吧,别人应该是没有完整回答他
rczjp 2012-08-15
  • 打赏
  • 举报
回复
菜鸟飘过。。
  • 打赏
  • 举报
回复
发帖都如果代码没有格式、没有缩进、没有用 CSDN 的代码框包住的,我一般点开来就关掉,基本上不会继续看下去了。
SocketUpEx 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 的回复:]

引用 37 楼 的回复:

你们这帮人啊
没有多线程,没有时钟,没有委托就干不了活了?
知道Application.DoEvents();的原理是什么吗?


建议你考虑下 DoEvents的使用环境,这种while循环可以用Event?你有没有想过后果?

如果你仅仅为了在加载大数据量不被界面卡死,用用是可以的。
这种实时计数的能用?耗时问题有考虑么?
[/Quote]

屁话
不是while(true)我还不用DoEvents呢
基本上只有while(true)时才用DoEvents
DoEvents就是为while(true)而生
后果?
你跟微软提去


dodducs 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 的回复:]

你们这帮人啊
没有多线程,没有时钟,没有委托就干不了活了?
知道Application.DoEvents();的原理是什么吗?
[/Quote]

建议你考虑下 DoEvents的使用环境,这种while循环可以用Event?你有没有想过后果?

如果你仅仅为了在加载大数据量不被界面卡死,用用是可以的。
这种实时计数的能用?耗时问题有考虑么?
quiteman 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 的回复:]

引用 33 楼 的回复:

引用 31 楼 的回复:

引用 28 楼 的回复:

引用 26 楼 的回复:

引用 24 楼 的回复:
引用 20 楼 的回复:

3楼就是我回复的,我在7楼给了你解决的方案,当然加上休眠就好一些

但是你作为一个程序员,应该明白起码的原理,能在主线程中写while(true)吗?
而且循环中没有给用户任何回应的机会?能吗?……
[/Quote]

那个帖子里已经到run()调用的东西了.
看下
http://www.knowsky.com/396353.html
这个帖子吧.
其实run()就是一个while (GetMessage(&msg, NULL, 0, 0)){
  TranslateMessage(&msg); DispatchMessage(&msg);
 }
资料引用:http://www.knowsky.com/396353.html
的死循环.

这是针对20楼关于主线程不能有死循环的说法而提出的.
SocketUpEx 2012-08-15
  • 打赏
  • 举报
回复
楼上,注意点
不要灌水


cbzjzsb123 2012-08-15
  • 打赏
  • 举报
回复
只是来学习的。。。。


你也说两句嘛

SocketUpEx 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 的回复:]

只是来学习的。。。。
[/Quote]

你也说两句嘛


koumingjie 2012-08-15
  • 打赏
  • 举报
回复
帮顶啊
Delta 2012-08-15
  • 打赏
  • 举报
回复
只是来学习的。。。。
SocketUpEx 2012-08-15
  • 打赏
  • 举报
回复
你们这帮人啊
没有多线程,没有时钟,没有委托就干不了活了?
知道Application.DoEvents();的原理是什么吗?


dodducs 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 的回复:]

引用 31 楼 的回复:

引用 28 楼 的回复:

引用 26 楼 的回复:

引用 24 楼 的回复:
引用 20 楼 的回复:

3楼就是我回复的,我在7楼给了你解决的方案,当然加上休眠就好一些

但是你作为一个程序员,应该明白起码的原理,能在主线程中写while(true)吗?
而且循环中没有给用户任何回应的机会?能吗?你的代码根本就存在逻辑上的错误与无……
[/Quote]

最简单办法,跟踪调试。就是new了个form1。如果你不喜欢调试。看下面帖子。这句话到底做了些什么

http://hi.baidu.com/homappy/item/7370bd451f3196e3bcf45146
dodducs 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 的回复:]

C# code
public bool truth = true;//用来停止循环
public void choujiang() //\\抽奖函数(随机跑动待投奖人员,按ENTER停止)
{
while (truth)
{
Random ran = new Rand……
[/Quote]

好吧,不用多线程,不用timer。你加一行代码怎么能不改变逻辑的情况下使程序正常运行,我等你高招。
SocketUpEx 2012-08-15
  • 打赏
  • 举报
回复
        public bool truth = true;//用来停止循环
public void choujiang() //\\抽奖函数(随机跑动待投奖人员,按ENTER停止)
{
while (truth)
{
Random ran = new Random();
label1.Text = ran.Next(1, 100).ToString();

Application.DoEvents();
}
}

private void button2_Click(object sender, EventArgs e)//执行抽奖函数
{
truth = true;
choujiang();
}

private void button2_KeyUp(object sender, KeyEventArgs e)//传值令抽奖函数停止
{
if (e.KeyCode == Keys.Enter)
{
truth = false;
}
else
{
truth = true;
}
}


那么简单的问题
吵个屁啊
UI处理不过来
加行代码不就能处理了嘛
还搞什么多线程啊,时钟啊


quiteman 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 的回复:]

引用 28 楼 的回复:

引用 26 楼 的回复:

引用 24 楼 的回复:
引用 20 楼 的回复:

3楼就是我回复的,我在7楼给了你解决的方案,当然加上休眠就好一些

但是你作为一个程序员,应该明白起码的原理,能在主线程中写while(true)吗?
而且循环中没有给用户任何回应的机会?能吗?你的代码根本就存在逻辑上的错误与无知。

我在三楼的回复就是你不……
[/Quote]

sorry,我在请教20楼的朋友 Application.Run(new Form1());到底做了些什么工作.
linggan5230 2012-08-15
  • 打赏
  • 举报
回复
从来不去技术区 ···
只在灌水乐园的路过 ···
dodducs 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 的回复:]

引用 26 楼 的回复:

引用 24 楼 的回复:
引用 20 楼 的回复:

3楼就是我回复的,我在7楼给了你解决的方案,当然加上休眠就好一些

但是你作为一个程序员,应该明白起码的原理,能在主线程中写while(true)吗?
而且循环中没有给用户任何回应的机会?能吗?你的代码根本就存在逻辑上的错误与无知。

我在三楼的回复就是你不能在主线程中写这样的代码,这相当于……
[/Quote]

简单的理解,UI线程负责重绘界面。当你把耗时的逻辑写在UI线程里就会阻塞UI线程,导致UI无法及时刷新,就会卡顿。所以逻辑基本都要写在多线程里。有了结果后再通知UI更新,或者危险点跨线程操作。不推荐后者。
加载更多回复(45)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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