我正在使用C# 2010开发,并且有一个计时器:
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);
尝试调查这篇文章,它展示了一个在指定间隔内运行并使用后台线程执行指定用户操作的通用轮询组件。
样例用法:
IPoller poller = new UrlPoller(args[0], TimeSpan.FromSeconds(7));
IPolling pollingComponent = new Polling.Core.Polling(poller);
pollingComponent.SubscribeForPollingUpdates(PollingAction);
pollingComponent.Start();
有关代码和完整示例,请参见:
_
(underscore)?应该是state => KA(stuff, state)
。 - digEmAllstuff
将在计时器触发时被评估。这可能是或可能不是OP想要的,它肯定是一个可能令人惊讶的副作用。 - BrokenGlass@_
是故意用 Perl 风格的吗?你的评论让我开心了! - Edurne Pascual