[.Net]

shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013 - 11 févr. 2007 à 20:50
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 - 12 févr. 2007 à 13:43
Bonjour, je cherche a créer un thread pour éviter de figer une boucle, cependant je n'arrive pas a lui faire passer les paramètres de la méthode ...

Je voudrai faire ceci en fait....


Dim



localthread

As
Thread
localthread =

New
Thread(

AddressOf
LocalScreen(rect, Width, Height, Quality))
localthread.Name =

"LocalThread"

localthread.Start()

Merci d'avance.

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
11 févr. 2007 à 21:21
En fait la syntaxe semble etre la suivante :

Dimlocalthread AsThread
localthread = NewThread( AddressOfLocalScreen)
localthread.Name = "LocalThread"
localthread.Start(TaValeurRect, TaLargeur, TaHauteur, TaQualité)
)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
11 févr. 2007 à 21:56
Oui, sauf que le sub sur lequel tu appelle le thread ne peux contenir qu'un Objet en paramètre.

Crée donc une classe contenant les paramètres de ton Sub LocalScreen (éventuellement fais-la hériter de System.EventArgs pour faire cool :p) et ajoute lui des champs correspondants à tes paramètres : rect, Width, Height et Quality.

Class ClassParams
  Inherits System.EventArgs
  Public rect as Rectangle, Width as integer, Height as integer, Quality as integer
End Class

Ensuite refait ton Sub LocalScreen comme suit :

Sub LocalScreen(O as Object)
  Dim params As ClassParams   'La classe que tu as défini
  Dim rect as rectangle, Width as integer, Height as integer, Quality as integer
  params = CType(O, ClassParams)
  rect = params.rect
  Width = params.Width
  Height = params.Height
  Quality = params.Quality
  ....
End Sub

Et pour lancer ton Thread :

Dim params as new classparams
params.rect = rect
params.width ...
...
Dim localthread as new thread(addressof LocalScreen)
localthread.Start(params)

Et voilà !

<hr size="2" width="100%" />Julien.
0
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013
11 févr. 2007 à 22:16
j'ai deux erreurs dans ma method:

Public
Shared
Function PictLocalSource(
ByVal rect
As Rectangle,
ByVal Quality
As System.Drawing.Imaging.PixelFormat,
ByVal Width
As
Integer,
ByVal Height
As
Integer,
ByVal PerSec
As
Decimal)
As Bitmap



Dim
localthread

As
Thread
localthread =

New
Thread(

AddressOf
LocalScreen)
localthread.Name =

"Thread1"

localthread.Start(rect, Width, Height, Quality)


End



Function

Erreur 1 La résolution de surcharge a échoué, car aucun 'New' accessible ne peut être appelé avec ces arguments :
    'Public Sub New(start As System.Threading.ParameterizedThreadStart)': La méthode 'Private Shared Function LocalScreen(rect As System.Drawing.Rectangle, Width As Integer, Height As Integer, Quality As System.Drawing.Imaging.PixelFormat) As System.Drawing.Bitmap' n'a pas la même signature que le délégué 'Delegate Sub ParameterizedThreadStart(obj As Object)'.
    'Public Sub New(start As System.Threading.ThreadStart)': La méthode 'Private Shared Function LocalScreen(rect As System.Drawing.Rectangle, Width As Integer, Height As Integer, Quality As System.Drawing.Imaging.PixelFormat) As System.Drawing.Bitmap' n'a pas la même signature que le délégué 'Delegate Sub ThreadStart()'. C:\Users\Shadow\Documents\Visual Studio 2005\Projects\ScreenServer\Screening\Screening.vb 50 23 Screening (Screening\Screening)

Erreur 2 La résolution de surcharge a échoué, car aucun 'Start' accessible n'accepte ce nombre d'arguments. C:\Users\Shadow\Documents\Visual Studio 2005\Projects\ScreenServer\Screening\Screening.vb 52 9 Screening (Screening\Screening)
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
12 févr. 2007 à 13:43
Ben c'est exactement ce que je dis, il te dis que ta méthode LocalScreen n'a pas la même signature que les deux signatures possibles, à savoir pas de paramètres, ou juste un objet en paramètre...

<hr size="2" width="100%" />Julien.
0
Rejoignez-nous