Самый простой способ вызвать код в данный момент времени в .NET - PullRequest
0 голосов
/ 07 мая 2009

Я ищу что-то хорошее и простое. Например:

RunAfter(3, delegate() { z = 5; }); // run after 3 seconds
FnThatTakes5Seconds();

В моих случаях я хочу протестировать некоторый многопоточный код и что-то произойдет во время вызова другой функции.

Ответы [ 3 ]

1 голос
/ 07 мая 2009
public static void RunAfter(int millisecondTimeout, 
    System.Threading.ThreadStart method) 
{ 
    System.Threading.Thread t = new System.Threading.Thread(() => 
    { 
        System.Threading.Thread.Sleep(millisecondTimeout); 

        method(); 
    }); 

    t.Start(); 
} 

Вы могли бы тогда сделать

RunAfter(3000, () => z = 5;);
0 голосов
/ 07 мая 2009

Вы также можете использовать WaitHandle для ожидания истечения времени ожидания в фоновом режиме.

ManualResetEvent objResetEvent = new ManualResetEvent();
objResetEvent.WaitOne(timeout, ...);
0 голосов
/ 07 мая 2009

Я бы использовал System.Threading.Timer, который срабатывает только один раз и запускается немедленно.

System.Threading.Timer _timer = new Timer(ProcessTimer, null, 3000, Timeout.Infinite);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...