Как создать пользовательские объекты / список пользовательских объектов в VB.NET ?
-
22-09-2019 - |
Вопрос
Мне нужны два отдельных списка, в которых каждый элемент является целым числом, String, Bitmap - и один, в котором каждый элемент является целым числом, String String .Однако я не знаю, как это сделать или даже где искать - я поискал в Google пользовательские объекты и списки пользовательских объектов.То, что я пытаюсь сделать, это вот что.Пользовательский объект1 - это целое число, строка, растровое изображение Пользовательский объект2 - это целое число, строка, String
В одном потоке я буду добавлять элементы в List1 (Из Object1), и обрабатывать их, и добавлять результаты в List2 (Из Object2), однако мне нужно иметь возможность из других потоков просматривать список и говорить, дайте мне только элементы, где Integer = (мой идентификатор потока), возможно ли это?Была бы полезна любая помощь или даже ссылки на информацию, которая имела бы отношение к этому запросу?
Решение
Сделайте что-то вроде этого:
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)
Конечно, вы захотите использовать более значимые имена.Что касается аспекта многопоточности, рассмотрите возможность использования Monitor
класс для блокировки ваших списков во всех потоках, пока один поток использует его.
Другие советы
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
Затем вы можете инициализировать его следующим образом...
Dim obj1 as List (Of Object1)
obj1.Add(New Object1(myInt, myStr, myBmp))