Bonjour,

Je désire faire un WaitHandle.WaitAll() en VB.Net, mais j'obtiens l'erreur indiquée dans le titre :s

J'ai cherché sur l'aide Microsoft et il faut apparemment passer le système de thread par défaut STA en MTA avec le <MTAThreadAttribute()> _.

J'ai donc testé cette solution en mettant le MTAThreadAttribute à la déclaration de la fonction (voir plus bas), mais j'ai à nouveau le même message d'erreur. Est-ce que quelqu'un pourrait m'indiquer la marche à suivre pour mener à bien cette opération svp?

La fonction est dans une simple classe possédant constructeur, attributs et méthodes (mais pas de main), elle est ensuite appelée depuis un main d'une autre classe.

Merci !!

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
<MTAThreadAttribute()> _
    Public Function waitAll(ByVal msecondsTimeout As Integer) As Boolean
        Console.WriteLine("Test")
        If _workflows.Count > 0 Then
            Dim handle(_workflows.Count - 1) As WaitHandle
            Dim index As Integer = 0
            For Each wrapper As WorkflowInstanceWrapper In _workflows.Values
                handle(index) = wrapper.waitHandle
                index = index + 1
            Next
            Return WaitHandle.WaitAll(handle, msecondsTimeout, False)
        Else
            Return True
        End If
    End Function