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 : 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
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
 
    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
Je cherche d'ou peut venir le problème mais je ne voit pas.
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