Как создать пользовательские объекты / список пользовательских объектов в VB.NET ?

StackOverflow https://stackoverflow.com/questions/2125940

Вопрос

Мне нужны два отдельных списка, в которых каждый элемент является целым числом, 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))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top