我有一个用C#编写的Windows窗体应用程序.无论打印机是否联机,以下功能都会进行判断:

public void isonline()
{
    PrinterSettings settings = new PrinterSettings();
    if (CheckPrinter(settings.PrinterName) == "offline")
    {
        pictureBox1.Image = pictureBox1.ErrorImage;
    }
}

并在打印机脱机时更新图像.现在,我怎样才能每2秒执行这个函数isonline(),这样当我拔下打印机时,表格(pictureBox1)上显示的图像就会变成另一个图像,而无需重新启动应用程序或进行手动判断?(例如,按"刷新"按钮运行isonline()功能)

推荐答案

使用System.Windows.Forms.Timer.

private Timer timer1; 
public void InitTimer()
{
    timer1 = new Timer();
    timer1.Tick += new EventHandler(timer1_Tick);
    timer1.Interval = 2000; // in miliseconds
    timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
    isonline();
}

你可以打Form1_Load()InitTimer().

.net相关问答推荐

为什么$NULL在ForEach-Object{}和Foreach()中的行为不同?

Azure管道-使用.NET 8 RC2 SDK生成C#项目失败

为什么 PropertyInfo.SetValue 在此示例中不起作用以及如何使其起作用?

EFCore.DbSet.Update 方法添加新行而不是更新它

F#:跨度、提升和底部类型(或缺乏)

仅在有换行符时捕获分隔符之间的所有文本

Owin Twitter登录-根据验证程序远程证书无效

如何从标头中检索基本身份验证凭据?

.NET 应用程序的链接器状态(又名请先生,我可以有一个链接器2009 年版)

AutoMapper 的替代品

如何根据新的安全策略在 .Net 中发送邮箱?

在 Moq Callback() 调用中设置变量值

将 Topshelf 应用程序安装为 Windows 服务

LINQ 性能常见问题解答

向 .NET 应用程序添加脚本功能

互锁且易变

如何在 C# 中安全地将 System.Object 转换为bool?

如何在多个解决方案之间共享相同的 Resharper 设置,无需人工干预?

立即检测客户端与服务器套接字的断开连接

序列化和反序列化 .NET 对象的最快方法