Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从计时器调用函数_C# - Fatal编程技术网

C# 如何从计时器调用函数

C# 如何从计时器调用函数,c#,C#,我想在uwp中的一个间隔后调用一个函数,所以我有: private void TimedEvent() { aTimer = new System.Timers.Timer(); aTimer.Interval = 40000; aTimer.Elapsed += new ElapsedEventHandler(PresencePage_Loaded); aTimer.AutoReset

我想在uwp中的一个间隔后调用一个函数,所以我有:

 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事件