Bonjour,

Je voudrais faire apparaitre une fenêtre en WPF puis fermer à la fois la fenêtre et l'application :
- Soit au clic sur le bouton OK
- Soit au bout de 3s

J'ai donc fait ceci.
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
public partial class UpdateInProgress : System.Windows.Window
{
	public static event EventHandler OnWindowDoClose;
	private readonly Timer _TimerClose;
	public UpdateInProgress()
	{
		InitializeComponent();
		OnWindowDoClose += delegate { CloseAll(); };
 
		_TimerClose = new Timer(3000);
		_TimerClose.Elapsed += delegate
		{
			if (OnWindowDoClose != null)
				OnWindowDoClose(this, null);
		};
		_TimerClose.Start();
 
	}
 
	private void BtCloseApp_Click(object sender, RoutedEventArgs e)
	{
		CloseAll();
	}
 
	private void CloseAll()
	{
		Close();
		App.Close();
	}
}

1) Si je clique sur le bouton => OK
2) Si j'attends 3s => ERREUR

J'obtiens dans CloseAll() lors de l'appel à Close();
Le thread appelant ne peut pas accéder à cet objet parce qu'un autre thread en est propriétaire.
Je pensais qu'en appelant CloseAll() au moment ou l'évènement est levé mais ça ne passe pas. Quelqu'un aurait il une idée svp?