将方法放在计时器中以减慢Emotiv Epoc的速度

时间:2012-05-14 15:06:09

标签: c# timer pooling

我是c#的新手。

问题

我想在计时器中运行一个方法,但该方法返回/需要的参数不在计时器的定时器集中。

原因:定期调用该方法(EPOC Emotiv耳机),我希望每秒只调用一次。

通过函数调用(我认为):

EmoEngine.Instance.CognitivEmoStateUpdated + = new EmoEngine.CognitivEmoStateUpdatedEventHandler(Instance_CognitivEmoStateUpdated);

运行的方法(太常规)是:

void Instance_CognitivEmoStateUpdated(object sender,EmoStateUpdatedEventArgs e)         {             EmoState es = e.emoState;             EdkDll.EE_CognitivAction_t currentAction = es.CognitivGetCurrentAction();          }

sotware已经附带一个计时器运行来每秒处理事件:

private void timer1_Tick(object sender,EventArgs e)         {             engine.ProcessEvents();          }

我希望我可以简单地将方法aboce(Instance_Cogn ...)放在计时器中,我认为这会解决问题 ..

请问最好的方法是什么?

很多人。

1 个答案:

答案 0 :(得分:1)

使用System.Threading.Timer而不是Timer Control。 线程的时间类使您能够传递参数并在代码中使用函数的输出。

   // Create the delegate that invokes methods for the timer.
   TimerCallback timerDelegate = new TimerCallback(CheckStatus);

   // Create a timer that waits one second, then invokes every second.
   Timer timer = new Timer(timerDelegate, arguments,1000, 1000);

Refer the sample code