Привязка ListBox к переменой в другом потоке

233
14 апреля 2017, 19:06

Есть экземпляр класса в другом потоке, это сервер который имеет изменяющийся список клиентов. Как привязать этот список клиентов к компоненту в окне? Framework 3.5

Пытался передать компонент как параметр в поток или ссылку в конструктор, но не вышло. (Инициализатор поля не может обращаться к нестатическому полю, методу...)

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            serverThread = new Thread(server.Start);
            serverThread.Start();
        }
        AsynchronousIoServer server = new AsynchronousIoServer(46484);
        Thread serverThread;
        public void AddToList()
        {
            clientsListBox.Add(); //THIS ListBox
        }
    }
public class AsynchronousIoServer
    {
        private Socket _serverSocket;
        private int _port;
        public AsynchronousIoServer(int port)
        {
            _port = port;
        }
        public class ConnectionInfo
        {
            public Socket Socket;
            public byte[] Buffer;
        }
        private List<ConnectionInfo> _connections = new List<ConnectionInfo>(); // THIS LIST
        public void Start()
        {
            while (true)
                _serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), _serverSocket);
        }
        private void AcceptCallback(IAsyncResult result)
        {
            ConnectionInfo connection = new ConnectionInfo();
            try
            {
                Socket s = (Socket)result.AsyncState;
                connection.Socket = s.EndAccept(result);
                connection.Buffer = new byte[255];
                lock (_connections) _connections.Add(connection);
                connection.Socket.BeginReceive(connection.Buffer, 0, connection.Buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), connection);
                _serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), result.AsyncState);
            }
        //code
    }
    //code
}
READ ALSO
База данных без базы данных

База данных без базы данных

Здравствуйте, задача у меня страннаяНеобходимо сделать форму регистрации пассажиров, без использования баз данных, чисто C#

175
Функция из DLL (на Си) не работает в C#

Функция из DLL (на Си) не работает в C#

Как передать буфер для заполнения в функцию (функция в DLL-ке напна Си , исходника нету) я делаю так

207
Десериализация коллекции объектов JSON

Десериализация коллекции объектов JSON

Есть базовый класс и несколько его потомков:

223
Загрузить DataTable в файл Excel по частям. C#, ASP.NET

Загрузить DataTable в файл Excel по частям. C#, ASP.NET

Я использую ClosedXMLExcel для создания файла Excel из DataTable

269