调度计时器将不起作用
Dispatch timer won't work
我试图弄清楚调度计时器是如何工作的,以便我可以将其实现到我的程序中,我按照网站上的确切说明进行操作并寻找有关堆栈溢出的答案。人们说他们的问题已解决,但我有非常相似的代码,但它不会工作...
错误是:
No overload for "timer_Tick" matches delegate "EventHandler<object>"
我能做什么?
public MainPage()
{
this.InitializeComponent();
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(1);
timer.Tick += timer_Tick;
timer.Start();
}
void timer_Tick(EventArgs e)
{
TimeRefresh();
}
您需要修复事件处理程序签名。它缺少发件人,第二个参数的类型只是 object
。 (参见documentation。)
void timer_Tick(object sender, object e)
{
TimeRefresh();
}
您还需要在 class 的顶部添加一个 using Windows.UI.Xaml;
,或者使用完整的命名空间实例化计时器:
Windows.UI.Xaml.DispatcherTimer timer = new Windows.UI.Xaml.DispatcherTimer();
如果有人偶然发现并使用 WPF,它有自己的 DispatchTimer。确保您引用的是 "WindowsBase" (默认情况下应该存在)。签名略有不同。
void timer_Tick(object sender, EventArgs e)
{
TimeRefresh();
}
它所在的命名空间也不一样。将 using System.Windows.Threading;
添加到顶部,或者使用完整的命名空间进行限定:
System.Windows.Threading.DispatcherTimer timer
= new System.Windows.Threading.DispatcherTimer();
如果您使用的是 WinForms,则需要使用不同的计时器。 Read this WinForms Timer 和 WPF DispatchTimer 的区别。
您必须指定事件的来源。
void timer_Tick(object sender,EventArgs e)
{
TimeRefresh();
}
活动注册应该是这样的:
timer.Tick += new EventHandler(timer_Tick);
Here 您可以阅读有关事件和事件处理程序的更多信息
我试图弄清楚调度计时器是如何工作的,以便我可以将其实现到我的程序中,我按照网站上的确切说明进行操作并寻找有关堆栈溢出的答案。人们说他们的问题已解决,但我有非常相似的代码,但它不会工作...
错误是:
No overload for "timer_Tick" matches delegate "EventHandler<object>"
我能做什么?
public MainPage()
{
this.InitializeComponent();
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(1);
timer.Tick += timer_Tick;
timer.Start();
}
void timer_Tick(EventArgs e)
{
TimeRefresh();
}
您需要修复事件处理程序签名。它缺少发件人,第二个参数的类型只是 object
。 (参见documentation。)
void timer_Tick(object sender, object e)
{
TimeRefresh();
}
您还需要在 class 的顶部添加一个 using Windows.UI.Xaml;
,或者使用完整的命名空间实例化计时器:
Windows.UI.Xaml.DispatcherTimer timer = new Windows.UI.Xaml.DispatcherTimer();
如果有人偶然发现并使用 WPF,它有自己的 DispatchTimer。确保您引用的是 "WindowsBase" (默认情况下应该存在)。签名略有不同。
void timer_Tick(object sender, EventArgs e)
{
TimeRefresh();
}
它所在的命名空间也不一样。将 using System.Windows.Threading;
添加到顶部,或者使用完整的命名空间进行限定:
System.Windows.Threading.DispatcherTimer timer
= new System.Windows.Threading.DispatcherTimer();
如果您使用的是 WinForms,则需要使用不同的计时器。 Read this WinForms Timer 和 WPF DispatchTimer 的区别。
您必须指定事件的来源。
void timer_Tick(object sender,EventArgs e)
{
TimeRefresh();
}
活动注册应该是这样的:
timer.Tick += new EventHandler(timer_Tick);
Here 您可以阅读有关事件和事件处理程序的更多信息