2010-01-24 6 views
2

J'ai besoin de deux listes séparées, dont chaque élément est Integer, String, Bitmap - et dont chaque élément est Integer, String String. Cependant, je ne sais pas comment faire cela, ou même où chercher - J'ai recherché des objets personnalisés et des listes d'objets personnalisées. Ce que j'essaye de faire est ceci. personnalisé Object1 est Integer, String, Bitmap personnalisée Object2 est Integer, String, StringComment créer des objets personnalisés/liste d'objets personnalisés dans VB.NET?

Dans un fil, je vais ajouter des éléments à List1 (de Object1), et de les traiter, et en ajoutant les résultats à List2 (Of Object2), cependant je dois pouvoir partir d'autres threads pour regarder la liste et dire seulement les éléments où Integer = (mon ID de thread), est-ce possible? Toute aide, ou même des liens vers des informations qui seraient pertinentes pour cette demande seraient utiles?

Répondre

3

quelque chose comme ça:

Public Class Type1 
    Private _ThreadID As Integer 
    Public Property ThreadID() As Integer 
     Get 
      Return _ThreadID 
     End Get 
     Set 
      _ThreadID = Value 
     End Set 
    End Property 

    Private _MyString As String 
    Public Property MyString() as String 
     Get 
      Return _MyString 
     End Get 
     Set 
      _MyString = Value 
     End Set 
    End Property 

    Private _MyBitmap As Bitmap 
    Public Property MyBitmap As Bitmap 
     Get 
      Return _MyBitmap 
     End Get 
     Set 
      _MyBitmap = Value 
     End Set 
    End Property 
End Class 

.

Dim list1 As New List(Of Type1)() 
''# ... Add some items to the list... 

''# List items with a given thread id: 
Dim SomeThreadID As Integer = GetMyThreadID() 
list1.Where(Function(o) o.ThreadID = SomeThreadID) 

Bien sûr, vous voudrez utiliser des noms plus significatifs. En ce qui concerne l'aspect multithread, regardez dans la classe Monitor pour verrouiller vos listes sur tous les threads pendant qu'un thread l'utilise.

0
 Private Class Object1 
     Public Property int() As Integer 
      Get 
       Return _int 
      End Get 
      Set(ByVal value As Integer) 
       _int = value 
      End Set 
     End Property 

     Public Property str() As String 
      Get 
       Return _str 
      End Get 
      Set(ByVal value As String) 
       _str = value 
      End Set 
     End Property 

     Public Property bmp() As Bitmap 
      Get 
       Return _bmp 
      End Get 
      Set(ByVal value As Bitmap) 
       _bmp = value 
      End Set 
     End Property 

     Friend _int As Integer 
     Friend _str As String 
     Friend _bmp As Bitmap 

     Public Sub New(ByVal int As Integer, ByVal str As String, ByVal bmp as Bitmap) 
      _int = int 
      _str = str 
      _bmp = bmp 
     End Sub 
    End Class 

Ensuite, vous pouvez l'initialiser comme si ...

Dim obj1 as List (Of Object1) 
obj1.Add(New Object1(myInt, myStr, myBmp)) 
+0

Vous avez déclaré toutes vos propriétés publiques comme des dates – AUSteve

+0

Bonne prise ... malheureusement Copier/Coller n'est PAS toujours votre ami. –

Questions connexes