我在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之间的打开而不冻结任何内容?
答案 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();