可以用我的计时器包装类的手,会很棒

时间:2011-08-08 21:15:27

标签: c# delegates timer

我至少在这个问题上缩小了我的错误,但我现在只是陷入困境。我在那“似乎它应该工作”而且我只重新翻过相同的帖子。所以。我正在使用一个抽象基类,我想用它来控制数据下载过程。对于这个类,我添加了一个我为System.Threading.Timer编写的包装器实例。在我的计时器的构造函数中,我有两个参数,一个是尝试将抽象方法传递给Callback对象,另一个是计时器的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)'的最佳重载方法匹配有一些无效的参数

期待任何建议。感谢...

1 个答案:

答案 0 :(得分:1)

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

如果你试图传递方法本身(在这种情况下为MainDataRunProcedure),则删除括号,即:

new DataRunTimer(MainDataRunProcedure, GetMillisecondsUntilDataRun());

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

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