暂停c程序几秒钟
本文关键字:几秒 程序 暂停 | 更新日期: 2023-09-27 17:50:50
我想暂停C#程序几秒钟,我不想使用system.threading.thread.sleep,还有其他方法可以暂停程序吗。
我想显示窗口一秒钟并自动最小化。我添加了两个定时器,一个用于最大化窗口,另一个用于最小化;当窗口最大化时,我想在那里呆几秒钟,如果我使用睡眠方法,它不会在窗体上显示文本。那么,有没有办法让窗口暂停几秒钟呢。
我想如果你不想使用Sleep
,剩下的就是使用这样的计时器:
System.Timers.Timer timer1= new System.Timers.Timer(1000);
timer1.Elapsed += new ElapsedEventHandler(maximizeScreen);
timer1.Start();
private void maximizeScreen(object source, ElapsedEventArgs e) {
//Do the maximizing
//disable the timer
((System.Timers.Timer)source).Stop();
System.Timers.Timer timer2= new System.Timers.Timer(2000);
timer2.Elapsed += new ElapsedEventHandler(minimizeScreen);
timer2.Start();
}
private void minimizeScreen(object source, ElapsedEventArgs e) {
//Do the minimizing
//disable the timer
((System.Timers.Timer)source).Stop();
}
如果您使用的是.NET 4.5,您可以在Task
类上使用Delay
方法等待一段预定的时间,如下所示:
private async void MaximizeScreenAsync(CancellationToken cancellationToken)
{
//Do the maximizing
// Hold off for two seconds.
await Task.Delay(TimeSpan.FromSeconds(2), cancellationToken);
// Minimize the screen.
}
注意cancellationToken
参数的使用,如果需要,您可以传递一个CancellationToken
结构(从CancellationTokenSource
创建(来取消它。
MaximizeScreen
方法假设您最初手动触发屏幕的显示。
这里的async
/await
关键字将确保调用await Task.Delay
后的代码在正确的SynchronizationContext
上运行(如果您正在执行最小化和最大化窗口等UI操作,这一点很重要。请注意,如果您在调用Task.Delay
时返回的Task
上调用参数为false的ConfigureAwait
方法,则情况并非如此(。
请注意,对MaximizeScreen
的调用,因为它被标记为async
,一旦到达对async Task.Delay
的调用,就会立即返回,所以您不应该期望屏幕在完成时最小化。
如果你想等到屏幕完成,那么我建议你暴露一个任务并等待它
首先,修改签名以返回Task
(没有其他更改(:
private async Task MaximizeScreenAsync(CancellationToken cancellationToken)
然后在调用站点,只需在返回的Task
上调用Wait
方法(使用传递给MaximizeScreenAsync
的相同CancellationToken
(:
MaximizeScreenAsync(cancellationToken).Wait(cancellationToken);
您可能需要等待启动屏幕。这是一个简单的窗口窗体,它显示一些文本消息并保持打开一段时间:
public partial class WaitWindow : Form
{
System.Windows.Forms.Timer timer;
public WaitWindow(int interval)
{
InitializeComponent();
this.Shown += new EventHandler(WaitWindow_Shown);
timer = new Timer();
timer.Interval = interval;
timer.Tick += new EventHandler(timer_Tick);
}
void WaitWindow_Shown(object sender, EventArgs e)
{
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
timer.Stop();
this.Close();
}
}
它使用定时器在给定的时间段内关闭。至少你可以这样使用它:
new WaitWindow(1000).ShowDialog();
当谈到windows窗体时,更适合使用System.windows.forms.Timer作为:
此计时器已针对Windows窗体应用程序和必须在窗口中使用。
而System.Timers.Timer:
基于服务器的Timer设计用于多线程环境。