C#窗体程序,程序运行10个小时关闭程序,时间格式怎么表达的完整代码
时间: 2024-09-22 13:00:54 浏览: 36
基于C#实现的窗体应用程序源码+说明(定时关闭特定进程).zip
在C#窗体程序中,如果你想让程序运行10个小时后自动关闭,你可以使用`DateTimeOffset.AddHours()`方法结合`Task.Delay()`,但这通常用于非用户界面的后台任务,因为直接关闭窗体可能会让用户感到意外。以下是一个示例,展示了如何在后台线程中延迟10小时后结束整个应用程序:
```csharp
using System;
using System.Timers; // 使用System.Timers.Timer进行定时
public partial class MainForm : Form
{
private readonly CancellationTokenSource _cancellationTokenSource;
public MainForm()
{
InitializeComponent();
_cancellationTokenSource = new CancellationTokenSource();
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerSupportsCancellation = true;
worker.DoWork += (sender, e) => DoLongRunningTask(e, _cancellationTokenSource.Token);
worker.RunWorkerCompleted += (_, __) => Application.Exit(); // 程序完成时退出
worker.RunWorkerAsync();
}
private async void DoLongRunningTask(object sender, DoWorkEventArgs e, CancellationToken cancellationToken)
{
try
{
TimeSpan hoursToRun = TimeSpan.FromHours(10); // 运行10小时
await Task.Delay(hoursToRun, cancellationToken);
Console.WriteLine("10小时已到,将要关闭程序...");
}
catch (OperationCanceledException) when (cancellationToken.IsCancellationRequested) // 检查是否已被取消
{
Console.WriteLine("操作已取消,程序即将关闭...");
}
finally
{
e.Cancel = true; // 取消任务
}
}
private void buttonClose_Click(object sender, EventArgs e)
{
if (!_cancellationTokenSource.IsCancellationRequested) // 用户手动关闭按钮
{
_cancellationTokenSource.Cancel();
}
}
}
```
在这个例子中,用户可以通过点击“关闭”按钮提前停止程序运行。如果在后台等待期间没有收到用户的请求,则会在10小时后自动退出。
阅读全文