首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

初学者有关问题:不用线程,是男人就等10秒

2012-04-04 
菜鸟问题:不用线程,是男人就等10秒!winfrom程序,不能用线程,因为控件不支持。让程序等待10秒后继续执行。我

菜鸟问题:不用线程,是男人就等10秒!
winfrom程序,不能用线程,因为控件不支持。
让程序等待10秒后继续执行。
我的方法,肯定是行不通啦,timer3_Tick根本不执行。就无限循环在while里了。

C# code
public  bool IsTime = true;        private void waitTimes()        {            timer3.Interval = 10000;            timer3.Start();            while (IsTime)            {                            }            timer3.Stop();            IsTime = true;        }        private void timer3_Tick(object sender, EventArgs e)        {            IsTime = false;        }


[解决办法]
探讨
引用:
Thread.Sleep(10000)这样应该可以,当前线程会被阻塞10秒,

是这样的,我在程序里用webbrowser有序的打开几个页面,然后获取页面内容,页面上有很多的控件会触发多次completed。所以想干脆让程序等10秒,可是webbrowser似乎不支持跨线程操作,所以无法让主线程等待子线程打开网页。各位想想办法吧,谢啦。

[解决办法]
不知道你想让哪个线程等待,但web控件跨线程操作可以用控件的invoke方法实现。
[解决办法]
SpinWait或者TickCount,InterLocked循环锁都可以设计大约10秒后继续; --这个是“纯”浪费CPU时间
ThreadPool.RegisterWaitForSingleObject 也可以设计延时;--这个是等待信号
System.Thread.Timer可以设置延时10s后执行;--只是构造器的设置
WaitHandle也可以 --等待信号量

[解决办法]
把你的while拆了,分成两函数。
在timer里,计时到了,再执行第二个函数
[解决办法]
你把打开网页后要执行的内容写在timer3里即可

private void waitTimes()
{
timer3.Interval = 10000;
timer3.Start();
打开几个页面
}

private void timer3_Tick(object sender, EventArgs e)
{
页面打开后要做的事
}

热点排行