我想暂停C#程序几秒钟,我不想使用system.threading.thread.sleep,还有其他方法可以暂停程序。
我想显示窗口一秒钟并自动最小化。 我添加了两个计时器,用于最大化窗口,一个用于最小化; 当窗口最大化时,如果我使用睡眠方法,它希望在那里停留几秒钟,它不会在窗体上显示文本。那么有什么方法可以暂停窗口几秒钟。
答案 0 :(得分:1)
我想如果你不想使用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();
}
答案 1 :(得分:1)
如果您使用的是.NET 4.5,则可以使用Delay
method上的Task
class等待预定的时间,如下所示:
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
structure(从CancellationTokenSource
创建)以取消此操作。
MaximizeScreen
方法假定您最初手动触发屏幕显示。
此处async
/ await
个关键字将确保调用await Task.Delay
后的代码运行在正确的SynchronizationContext
上(如果您正在执行UI,这很重要)最小化和最大化窗口等操作。另请注意,如果您通过调用返回的Task
上的Task.Delay
参数为ConfigureAwait
method,则不 MaximizeScreen
)。
请注意,对async
的呼叫,因为它被标记为async Task.Delay
,一旦达到Task
的呼叫,将立即返回,因此您不应期望屏幕是完成后最小化。
如果您想等到屏幕完成,那么我建议您公开任务并等待它。
首先,修改签名以返回private async Task MaximizeScreenAsync(CancellationToken cancellationToken)
(没有其他更改):
Task
然后在通话网站上,只需致电CancellationToken
上的Wait
method,使用您传递给MaximizeScreenAsync
的同一MaximizeScreenAsync(cancellationToken).Wait(cancellationToken);
来呼叫:
{{1}}
答案 2 :(得分:0)
你可能会有一种闪屏等待。这是一个简单的窗体,显示一些文本消息并保持打开一段时间:
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窗体应用程序和 必须在窗口中使用。
while System.Timers.Timer:
基于服务器的Timer设计用于a中的工作线程 多线程环境。