吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1798|回复: 10
收起左侧

[已解决] C#延时怎么实现

[复制链接]
落红护花 发表于 2021-2-24 16:46
本帖最后由 winnie2007 于 2021-2-24 18:32 编辑

            label1.Text = "0";
                 延时2秒
            label2.Text = "1";
                 延时2秒
            label3.Text = "2";
                 延时2秒
            label4.Text = "3";




运行效果:label1先显示0,两秒后label2显示1,两秒后label3显示2 。。。
用 System.Threading.Thread.Sleep(2000);  不行,这样只会使6秒后编译程序(2*3=6秒)


大佬们有没有办法啊,求助!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

DanK 发表于 2021-2-24 16:57
有办法,稍等
wangyujie96 发表于 2021-2-24 17:01
建议用多线程,在新线程里写如上代码就能避免主界面/主线程卡住
DanK 发表于 2021-2-24 17:08
[C#] 纯文本查看 复制代码
private void Form2_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;
            new System.Threading.Thread(() =>
            {
               

                label1.Text = "1";
                System.Threading.Thread.Sleep(2000);
                label2.Text = "2";
                System.Threading.Thread.Sleep(2000);
                label3.Text = "3";

            }).Start();

           
        }

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
落红护花 + 1 + 1 谢谢@Thanks!

查看全部评分

头像被屏蔽
zpt1990115 发表于 2021-2-24 17:10
提示: 作者被禁止或删除 内容自动屏蔽
Cool_Breeze 发表于 2021-2-24 17:25
[C#] 纯文本查看 复制代码
using System.Threading;
Thread.Sleep(1000);
tanyh 发表于 2021-2-24 17:31
[C#] 纯文本查看 复制代码
public MainForm()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			
			InitializeComponent();
			
			
			ThreadPool.UnsafeQueueUserWorkItem((param) => {
				var isCreated = false;
				while (!isCreated) 
				{
					if (this.IsHandleCreated) {
						isCreated = true;
						label1.BeginInvoke(new Action(() => label1.Text = "1"));
				
						Thread.Sleep(1000);
										
						label2.BeginInvoke(new Action(() => label2.Text = "2"));				
				
						Thread.Sleep(1000);
				
						label3.BeginInvoke(new Action(() => label3.Text = "3"));
											
						Thread.Sleep(1000);
											
						label4.BeginInvoke(new Action(() => label4.Text = "4"));
					}
				}		
			}, null);
			
			
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}


这样就可以了!!!!

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
落红护花 + 1 + 1 谢谢@Thanks!

查看全部评分

wap6575 发表于 2021-2-24 17:42
这样写会导致卡UI。另外这代码如果放在窗体main入口处,还会导致窗体6秒后在能打开。建议重新写个 方法用新线程去调用
sghzlx 发表于 2021-2-24 17:47
本帖最后由 sghzlx 于 2021-2-24 18:05 编辑

笨办法
放个timer  ,设置一下即可,设置周期2000,里面分别判断标签的值,再做出相应动作,最后关闭timer

 楼主| 落红护花 发表于 2021-2-24 18:31
DanK 发表于 2021-2-24 17:08
[mw_shl_code=csharp,true]private void Form2_Load(object sender, EventArgs e)
        {
            ...

感谢感谢,非常好用
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 07:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表