2015-03-24 5 views
-2

Я пытаюсь сделать нажатие кнопки нажатием кнопки x через эту кнопку, затем выполнить его действие, я использую System.Windows.Forms.Timer, чтобы сделать это в Win-form, но как сделать то же самое в WPF.
я сделать эту функцию, чтобы ждать 5 секунд, прежде чем сделать какое-либо действие
Подождите несколько секунд, затем выполните действие кнопки WPF

private System.Windows.Forms.Timer MTimer = new System.Windows.Forms.Timer(); 

    private void StartAsyncTimedWork() 
    { 
     MTimer.Interval = 5000; 
     MTimer.Tick += new EventHandler(MTimer_Tick); 
     MTimer.Start(); 
    } 

Как я могу сделать то же самое в МОФ и сделать пользователь на кнопку с помощью мыши и подождите 5 вторых перед тем кнопку выполнить действие, может, пожалуйста, дайте мне ссылку или бит кода.

+0

Thread.Sleep не будет делать? –

+3

@TalhaIrfan: Нет, это точно не будет - это заморозит пользовательский интерфейс, поскольку он заблокирует поток пользовательского интерфейса. –

+0

На самом деле ваш код означает «MTimer_Tick» каждые пять секунд. – kennyzx

ответ

1

Альтернатива для tmer в окнах образуют контроль DispatcherTimer. Он делает почти то же самое, но вместо того, чтобы отбрасывать его в своей форме, вы создаете и используете его исключительно из кода кода.

The DispatcherTimer

1

Ну вы могли использовать DispatcherTimer вместо этого, но это, вероятно, проще всего использовать async метод и Task.Delay:

public async void Foo(object sender, RoutedEventArgs e) 
{ 
    await Task.Delay(5000); 
    DoSomething(); 
} 
0

Вы также можете использовать Observable синтаксис:

Observable.Interval(TimeSpan.FromSeconds(1)).Subscribe(x => // do something here like 
Console.WriteLine(x)); 
+0

Вы бы использовали его точно так, как показано! –

Смежные вопросы