C # timer - запланировать вызов функции, принимающей аргумент - PullRequest
1 голос
/ 02 декабря 2011

Я хочу вызывать функцию каждые X секунд. Я читаю на SO о System.Threading.Timer и поэтому делаю:

Timer timer = new Timer(new TimerCallback(TimeCallBack), null, 0, 50000);

который вызывает функцию:

void TimeCallBack();

Однако я бы хотел передать аргумент этой функции, чтобы таймер вызвал следующую функцию:

void TimeCallBack(MyClass mc);

Я мог бы сделать экземпляр, который я передаю, глобальным, но я бы предпочел передать его. Из того, что я вижу, делегат TimerCallback используется в конструкторе Timer. В любом случае я могу использовать свой собственный вызов делегата / функции?

1 Ответ

9 голосов
/ 02 декабря 2011

Вы можете передать аргумент обратному вызову через параметр state в конструкторе таймеров :

Timer timer = new Timer(new TimerCallback(TimeCallBack), mc, 0, 50000);

Обратный вызов:

void TimeCallBack(object state)
{
    MyClass mc = (MyClass)state;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...