我在C#2010工作,我有一个计时器:C#定时器功能?
private Timer m_Timer;
void KA(string SendStuff, object State)
{
}
m_Timer = new Timer(new TimerCallback(KA(DATA)));
我想这个计时器调用函数“KA”,无论通过“DATA”就是它。
DATA是一个字符串
我怎么会通过使用计时器信息功能“KA”?
感谢
我在C#2010工作,我有一个计时器:C#定时器功能?
private Timer m_Timer;
void KA(string SendStuff, object State)
{
}
m_Timer = new Timer(new TimerCallback(KA(DATA)));
我想这个计时器调用函数“KA”,无论通过“DATA”就是它。
DATA是一个字符串
我怎么会通过使用计时器信息功能“KA”?
感谢
你可以使用委托/ lambda表达式:
string stuff = "hi";
Timer t = new Timer(new TimerCallback(_ => KA(stuff, null)));
编辑:
考虑和反馈后,一个更清洁,简化版本是:
string stuff = "hi";
Timer t = new Timer(state => KA(stuff, state));
我觉得这是什么您正在寻找
private Timer m_Timer;
void KA(object state)
{
string data = (string) state;
}
m_Timer = new Timer(new TimerCallback(KA), DATA);
另一个例子是在这里:http://www.dotnetfunda.com/codes/code460-working-with-timercallback-delegate.aspx – Shawn 2011-04-01 21:36:15
尝试研究这篇文章,在C#中演示了运行在一个指定的时间间隔,并使用一个后台线程来执行指定的用户操作的通用查询组件。
使用范例:
IPoller poller = new UrlPoller(args[0], TimeSpan.FromSeconds(7));
IPolling pollingComponent = new Polling.Core.Polling(poller);
pollingComponent.SubscribeForPollingUpdates(PollingAction);
pollingComponent.Start();
的代码和完整的示例见:
为什么'_'(下划线)?它应该是'state => KA(stuff,state)' – digEmAll 2011-04-01 21:26:26
都可以工作 - OP对状态不感兴趣,只是他的'stuff'字符串,所以我不需要这个状态作为参数。 – BrokenGlass 2011-04-01 21:29:01
好奇的问题:如果在触发定时器之前修改了内容,会发生什么? – pdr 2011-04-01 21:32:10