C# 如何将多个参数传递给system.threading.timer()

C# 如何将多个参数传递给system.threading.timer(),c#,.net,C#,.net,如何将多个参数传递给C#中的System.Threading.Timer()所期望的回调 如何将第二个参数传递给我的databaseTrensfer函数? 提前感谢。为什么不创建一个包含由您要传入的附加项组成的属性的类呢?然后只需传递实际的容器类。计时器回调被定义为接受单个参数: public delegate void TimerCallback(object state); 如果需要向回调传递多个参数(在计时器构造函数上注册回调时已知),则可以使用lambda: Timer CreateT

如何将多个参数传递给C#中的
System.Threading.Timer()
所期望的回调

如何将第二个参数传递给我的
databaseTrensfer
函数?
提前感谢。

为什么不创建一个包含由您要传入的附加项组成的属性的类呢?然后只需传递实际的容器类。

计时器回调被定义为接受单个参数:

public delegate void TimerCallback(object state);
如果需要向回调传递多个参数(在
计时器
构造函数上注册回调时已知),则可以使用lambda:

Timer CreateTimer(object unitID)
{
    object   row      = ...
    TimeSpan dueTime  = ...
    TimeSpan interval = ...

    return new Timer(x => DatabaseTransfer (x, unitID), row, dueTime, interval);
}

static void DatabaseTransfer(object row, object unitID)
{
    ....
}
写入
x=>DataTransfer(x,unitID)
捕获
unitID
变量的状态,大致相当于:

Timer CreateTimer(object unitID)
{
    object   row      = ...
    TimeSpan dueTime  = ...
    TimeSpan interval = ...

    $Temp temp = new $Temp (unitID);

    return new Timer(temp.Callback, row, dueTime, interval);
}

class $Temp
{
    public $Temp(object arg)
    {
        this.arg = arg;
    }
    public void Callback(object x)
    {
        DataTransfer (x, this.arg);
    }
    private object arg;
}

编译器负责在后台构建类和管道。例如,请参见。

您将创建一个新的类或结构,其属性为
单元ID
。线程数与单个行共享此函数实例如何为每个行提供唯一的数据thread@vrushali,根据我目前对您的情况的了解,这种方法应该很好。使用“container”类,可以传递在特定上下文中工作所需的所有元素。
Timer CreateTimer(object unitID)
{
    object   row      = ...
    TimeSpan dueTime  = ...
    TimeSpan interval = ...

    $Temp temp = new $Temp (unitID);

    return new Timer(temp.Callback, row, dueTime, interval);
}

class $Temp
{
    public $Temp(object arg)
    {
        this.arg = arg;
    }
    public void Callback(object x)
    {
        DataTransfer (x, this.arg);
    }
    private object arg;
}