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