首页 新闻 会员 周边

C#中使用Thread.sleep(1000)与 while 循环暂停1s 有何区别和优缺点

0
[已解决问题] 解决于 2017-10-04 16:52

Hi All,

如题如果在一个Winform程序里面,由于需要更新一个全局变量,需要暂停1s,现在有两种方法可以实现:

1. Thread.Sleep(1000);  // update Global Var 

2.

DateTime dt = DateTime.Now.Add(1);

while(DateTime.Now.Compare(dt) < 0)

{  // update Global Var }

现在问题是哪种方法更好更安全的得到我想要的全局变量? 因为我的程序还有其他线程在跑,所以我怕Thread.Sleep()会导致其他线程有问题,但是使用While 会把程序在循环过程时导致其他界面出现短暂无响应,求高手指教?

C#
万事如意-的主页 万事如意- | 初学一级 | 园豆:93
提问于:2017-10-01 17:17
< >
分享
最佳答案
1

前者线程内cpu无消耗,后者线程内cpu如楼上所言——满载的执行判断指令;前者是基于系统cpu管理的,硬件给予支持;后者是前者之内的事情。

奖励园豆:5
花飘水流兮 | 专家六级 |园豆:13560 | 2017-10-01 19:36

感谢

万事如意- | 园豆:93 (初学一级) | 2017-10-04 16:51
其他回答(1)
2

你第二种会导致那个线程的cpu在那1s内满载,第一种只要不是在ui线程中就可以。

Daniel Cai | 园豆:10424 (专家六级) | 2017-10-01 18:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册