我在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