可以用一只手来处理我的定时器包装类,那就太好了

本文关键字:包装类 定时器 我的 处理 一只 | 更新日期: 2023-09-27 18:04:46

我至少缩小了在这个问题上的错误,但现在我只是陷入了困境。我认为"它似乎应该起作用",我只是在对相同的帖子进行再融资。所以,我正在使用一个抽象基类,我想用它来控制数据下载过程。我为这个类添加了一个为System.Threading.Timer编写的包装器实例。在计时器的构造函数中,我有两个参数,一个是尝试将抽象方法传递给回调对象,另一个是计时器的tick事件的时间,基于不同数据下载进程的具体/派生类中的实例变量。

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading;
using HtmlAgilityPack;
using DataUtlitiesMain;
using TradeSystemObjects;
using System.Data.SqlClient;
namespace DataOperations
{
public abstract class DataRunManager
{
    DataRunTimer dataRunTimer;
    private abstract String HourForDataRunInMilitary; //Such as 16.0 for 4pm.
    public DataRunManager()
    {
        SetDataRunTimer();
    }
    private void SetDataRunTimer()
    {
        dataRunTimer = new DataRunTimer(MainDataRunProcedure(),GetMillisecondsUntilDataRun());
    }
    protected abstract static void MainDataRunProcedure(object state);
    //public abstract TimerCallback SetDataRunMainDelegate();
    private Int32 GetMillisecondsUntilDataRun()
    {
        DateTime now = DateTime.Now;
        DateTime targetTime = DateTime.Today.AddHours(Convert.ToDouble(HourForDataRunInMilitary));
        return (int)((targetTime - now).TotalMilliseconds);
    }
}
public class DataRunTimer
{
    Timer timer;
    public DataRunTimer(TimerCallback TimerProc, Int32 MillisecondsUntilDataRun)
    {
        Timer timer = new Timer(TimerProc, null, MillisecondsUntilDataRun, 1000);
    }
}

还有我的错误:

参数1:无法从"void"转换为"System.Threading.TimerCallback"DataOperations

方法"MainDataRunProcedure"的重载采用0个参数

与"DataOperations.DataRunTimer.DataRunTimer(System.Threading.TimerCallback,int("匹配的最佳重载方法具有一些无效参数

期待任何建议。谢谢

可以用一只手来处理我的定时器包装类,那就太好了

编译器错误非常不言自明:MainDataRunProcedure返回void,但您正试图使用其返回值来调用DataRunTimer构造函数。

如果您试图传递方法本身(在本例中为MainDataRunProcedure(,则删除括号,即:

new DataRunTimer(MainDataRunProcedure, GetMillisecondsUntilDataRun());

省略括号会将该方法作为委托传递。如果你放上括号,那么你实际上是在试图调用方法(在这种情况下,没有参数(。

此外,abstract static方法既非法又毫无意义。