经过指定的时间后自动关闭的模式窗体
2012-07-16 19:54
232 查看
在开发单线图排版算法演示功能时,需要每执行一步排版过程,调整了电力设备的位置后就暂停一下,笔者第一个想到的方法就是让主线程暂停
代码如下:
private void showlayout_delay(double p_second)
{
DateTime now = DateTime.Now;
while (now.AddSeconds(p_second) > DateTime.Now)
{
}
return;
}
或
System.Threading.Thread.Sleep(p_waitMilliSecond);
上面的方法虽然让程序暂停下来,但是却存在一个问题:无论排版过程运行了多少步,程序的图形状态始终和初始时一样,不会变化
即使使用Invalidate、refresh方法强制刷新整个屏幕
最终使了个小聪明解决了该问题:制作一个经过指定的时间后自动关闭的模式窗体
代码如下
public partial class FormDialogAutoClose : Form
{
private Thread waitThread;
public FormDialogAutoClose(int p_waitMilliSecond)
{
InitializeComponent();
waitThread = new Thread(new ThreadStart(delegate()
{
System.Threading.Thread.Sleep(p_waitMilliSecond);
this.closeByThread();
waitThread.Abort();
}));
waitThread.Start();
}
private delegate void closeByThreadHandler();
public void closeByThread()
{
if (this.InvokeRequired)
{
this.Invoke(new closeByThreadHandler(closeByThread));
}
else
{
this.Close();
}
}
}
调用代码
FormDialogAutoClose t_formClose = new FormDialogAutoClose(暂停时间);
t_formClose.ShowDialog();
同时为了“掩人耳目”,将该模式窗体的Visible属性设置为false
代码如下:
private void showlayout_delay(double p_second)
{
DateTime now = DateTime.Now;
while (now.AddSeconds(p_second) > DateTime.Now)
{
}
return;
}
或
System.Threading.Thread.Sleep(p_waitMilliSecond);
上面的方法虽然让程序暂停下来,但是却存在一个问题:无论排版过程运行了多少步,程序的图形状态始终和初始时一样,不会变化
即使使用Invalidate、refresh方法强制刷新整个屏幕
最终使了个小聪明解决了该问题:制作一个经过指定的时间后自动关闭的模式窗体
代码如下
public partial class FormDialogAutoClose : Form
{
private Thread waitThread;
public FormDialogAutoClose(int p_waitMilliSecond)
{
InitializeComponent();
waitThread = new Thread(new ThreadStart(delegate()
{
System.Threading.Thread.Sleep(p_waitMilliSecond);
this.closeByThread();
waitThread.Abort();
}));
waitThread.Start();
}
private delegate void closeByThreadHandler();
public void closeByThread()
{
if (this.InvokeRequired)
{
this.Invoke(new closeByThreadHandler(closeByThread));
}
else
{
this.Close();
}
}
}
调用代码
FormDialogAutoClose t_formClose = new FormDialogAutoClose(暂停时间);
t_formClose.ShowDialog();
同时为了“掩人耳目”,将该模式窗体的Visible属性设置为false
相关文章推荐
- 等待指定时间后自动跳转或关闭当前页面
- 利用依赖属性实现模式窗体的自动关闭
- JS指定时间自动关闭一个基于DIV的层提示框代码
- 等待指定时间后自动跳转或关闭当前页面的js代码
- jquery实现指定时间自动关闭消息框
- WordPress 关闭文章修订和指定自动保存时间功能
- 等待指定时间后自动跳转或关闭当前页面的js代码
- 等待指定时间后自动跳转或关闭当前页面
- 自动关闭窗体的JS代码
- 茗洋Easy UI 1.3.5 部分问题解决系列专题[自定义alert关闭时间,自动关]
- js 检测web页面是否正在操作,如超过规定时间内未操作将自动跳转至指定页面。
- Qt关闭窗体自动释放资源
- Android 使用代码进入Recovery模式自动升级指定固件包
- C#.NET -自动读取文本文件中Email地址,指定时间后自动发送邮件
- Win7系统设置自动关闭显示器在设定时间内自动关闭
- 【转】子窗体刷新父窗体使用接口模式 父窗口关闭子窗口
- 【转】Expire Google Drive Files 让Google Docs云盘共享连接在指定时间后自动失效
- C# 设定时间内自动关闭提示框
- 黄聪:如何判断VS开发C#是否为设计模式,以免编译之前操作窗体设计器代码自动运行
- 用C#用C#实现窗体在规定时间弹出,例如:10:00.弹出后关闭。并在5分钟后再次弹出。5次后停止。最好有具体代码实现窗体在规定时间弹出,例如:10:00.弹出后关闭。并在5分钟后再次弹出。5次后停止。最好有具体代码