在c#中使用WinForm App进行操作的时间延迟

时间:2011-11-23 00:02:22

标签: c# winforms delay timedelay

我在C#中遇到Windows窗体应用程序的问题 在此应用程序中有一个选项卡式浏览器。现在我想在循环中(我做一些操作来计算下一个url)我可以在AddTab之间添加一个延迟。

I.E

 foreach(Urls url in Links){

        // Do something with url
         if(url.Host == "google"){ //if host is google until start the 
                                   // next AddTab i would wait 5 SEC
             addTab(url);
           //Here i Tried to use Sleep Thread , While(TimeCur-TimePre) {} but i always 
           // get Freezing and the other Tabs dont continue the loading
             Wait 5 Seconds in somehow
         }
}

正如我写的,我不想使用线程睡眠因为它冻结了我的表格申请。我已经在TimeCur-TimeSaved +(x秒)中使用了时间技巧,但这也冻结了表格。

我看到许多人说使用计时器的话题,所以我尝试使用它们(没有任何结果,也许我错了)

我可以在此循环中添加什么来延迟AddTab之间的打开而不冻结任何内容?

2 个答案:

答案 0 :(得分:4)

使用Windows窗体计时器(来自工具箱)。在属性中,设置间隔设置。然后在表单设计器上双击它。这将创建一个事件处理程序,当间隔时间过去时将触发该事件处理程序(在单独的线程中)。您可以在此处完成工作,表单将保持活动状态。

答案 1 :(得分:4)

    var thread = new System.Threading.Thread(p =>
    {
        lock (YourTabControl)
        {
            Action action = () =>
            {
                addTab(url);
            };
            this.Invoke(action);
            if(url.Host == "google")
                System.Threading.Thread.Sleep(5000);
        }
    });
    thread.Start();