C# 如何从计时器调用函数
我想在uwp中的一个间隔后调用一个函数,所以我有:C# 如何从计时器调用函数,c#,C#,我想在uwp中的一个间隔后调用一个函数,所以我有: private void TimedEvent() { aTimer = new System.Timers.Timer(); aTimer.Interval = 40000; aTimer.Elapsed += new ElapsedEventHandler(PresencePage_Loaded); aTimer.AutoReset
private void TimedEvent()
{
aTimer = new System.Timers.Timer();
aTimer.Interval = 40000;
aTimer.Elapsed += new ElapsedEventHandler(PresencePage_Loaded);
aTimer.AutoReset = true;
}
private async void PresencePage_Loaded(object sender, RoutedEventArgs e)
{}
但是,我得到了一个无过载的presencePage_加载的匹配委托ElapsedeventHandler错误。
我哪里出错了?代表的签名是:
public delegate void ElapsedEventHandler(object sender, ElapsedEventArgs e);
您需要更改方法签名以匹配,因此您需要将RoutedEventArgs
更改为elapsedeEventArgs
:
private async void PresencePage_Loaded(object sender, ElapsedEventArgs e)
{
}
已用时间被声明为
public event System.Timers.ElapsedEventHandler Elapsed;
装载在哪里
public event System.Windows.RoutedEventHandler Loaded;
由于事件具有不同的类型,因此不能将一个事件的处理程序用作另一个事件的处理程序
最简单的选择是将您的逻辑从处理程序拉到函数中
public async Task DoSomething(){...}
然后你可以有两个处理程序来调用这个函数
private async void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
await DoSomething();
}
private async void PresencePage_Loaded(object sender, RoutedEventArgs e)
{
await DoSomething();
}
附件如下
aTimer.Elapsed += Timer_Elapsed;
可能会导致比修复的问题更多的问题,因为PresencePage_Loaded是已加载事件的默认值,因此更改其签名将中断pages事件