Bonjour,
Dans le carde d'un application wpf J'essaye d’implémenter une fenêtre d'attente avec un progressbar qui s'affiche lors d'un traitement avec backgroundworker.
Lors du premier appel ça marche très bien. Seulement après même si le traitement se passe la fenêtre n’apparaît plus.
Code form principale:
Code de ma form d'attente:
Code : 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
32 Private Delegate Sub LoadDataDelegate() Dim _LoadDataDelegate = New LoadDataDelegate(AddressOf LoadData) ... Private Sub ButtonLoad_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles ButtonLoad.Click Me.BackgroundWorkerLoad = New BackgroundWorker() Me.BackgroundWorkerLoad = New System.ComponentModel.BackgroundWorker() Me.BackgroundWorkerLoad.WorkerReportsProgress = True Me.BackgroundWorkerLoad.WorkerSupportsCancellation = True Me.Cursor = Cursors.Wait Me.IsEnabled = False ILOJTnFormWait.ShowFormWait() Me.BackgroundWorkerLoad.RunWorkerAsync() End Sub #Region "BackgroundWorkers" Private Sub BackgroundWorkerLoad_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorkerLoad.DoWork Me.Dispatcher.Invoke(_LoadDataDelegate) End Sub Private Sub BackgroundWorkerLoad_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorkerLoad.RunWorkerCompleted ILOJTnFormWait.CloseFormWait() Me.IsEnabled = True Me.Cursor = Cursors.Arrow End Sub #End Region
Je cherche d'ou peut venir le problème mais je ne voit pas.
Code : 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 Private Shared _FrmWait As ILOJTnFormWait Public Sub New() InitializeComponent() End Sub Public Shared Sub ShowFormWait() 'If _FrmWait Is Nothing Then _FrmWait = New ILOJTnFormWait() 'End If _FrmWait.Topmost = True _FrmWait.WindowStartupLocation = Windows.WindowStartupLocation.CenterScreen _FrmWait.Show() End Sub Public Shared Sub CloseFormWait() If _FrmWait IsNot Nothing Then _FrmWait.Close() '_FrmWait = Nothing End If End Sub
Quand j'execute le code pas à pas tout semble cohérent et le code se déroule propremment.
Mais à partir du deuxième appel l'execution de "ILOJTnFormWait.ShowFormWait()" n'engendre plus l'affichage de ma form.
Quelqu'un aurait-il une idée? cela viendrait-il de la manière dont je ferme ma form d'attente?
Cordialement,
Christophe
Partager