“计时器”是一个“命名空间”,但像“类型”一样使用

本文关键字:命名空间 计时器 一样 类型 一个 但像 | 更新日期: 2023-09-27 18:37:06

我正在尝试用 C# 构建一个简单的计时器,最初使用此网站作为参考,但在应用程序中收到两行错误两次:

private Timer _timer;
_timer = new Timer();

最初,在我的应用程序中,我尝试...

System.Timers.Timer _timer = new Timer();

当我这样做时,C# 无法将 tick、start 或 stop 识别为方法。 最后,我将作者的代码复制并粘贴到我的应用程序中,只是为了看看我是否可以让计时器运行然后向后工作,我在相同的两行上收到了相同的错误。 我在网上读到的大部分内容都说通过 System.Timers.Timer 路由初始化计时器,但这会导致更多错误,并且我没有看到作者使用的那些方法在该路由下可用。

更新:如果我将using System.Windows.Forms.Timer;添加到文件顶部,我仍然会收到相同的错误消息。

注意:目前我的代码是作者代码的复制和粘贴,他断言该代码有效,但没有。

“计时器”是一个“命名空间”,但像“类型”一样使用

下面介绍如何创建计时器。这是一个窗口窗体计时器。您还可以创建一个Windows线程计时器。

    private System.Windows.Forms.Timer tmr;
    private void timerCallBack(object sender, EventArgs e)
    {
    }
    private void createTimer()
    {
        tmr = new System.Windows.Forms.Timer(this.components);
        tmr.Interval = 1000;
        tmr.Tick += new System.EventHandler(this.timerCallBack);
    }

您正在定义要System.Windows.Forms.Timer System.Timers.Timer,将其更改为Timer _timer = new Timer();并将using System.Windows.Forms.Timer;添加到文件顶部。

我曾经遇到过相同类型的错误。我错误的原因是我的项目名称是秒表,因此为该项目创建的命名空间也被命名为秒表,编译器碰巧通过我尝试访问的 System.Diagnostics.Stopwatch 类识别出它。

因此,当我尝试创建System.Diagnostics.Stopwatch类的对象时,我收到一个错误"秒表"是一个"命名空间",但即使我已经使用System.Diagnostics包含它,也像"类型"一样使用

后来我意识到编译器正在识别秒表命名空间,这是我在 System.Diagnostics.Stopwatch 类上处理的项目的命名空间。

因此,请确保您没有犯这个错误。

添加using System.Windows.Forms.Timer;将不起作用;因为生成的编译器错误消息会通知您,System.Windows.Forms.Timer是一种类型,而不是命名空间。

您需要添加using System.Windows.Forms;(注意,没有Timer)或按照死亡问题朋友的建议将每个Timer实例显式定义为System.Windows.Forms.Timer

private System.Windows.Forms.Timer _timer = new System.Windows.Forms.Timer();

刚刚将本文中链接的解决方案更新为VS2010解决方案,因此,如果您仍然遇到问题,我建议您下载,编译并运行它,然后仔细将该代码与您自己的代码进行比较。