app.UseMvc(routes => {
routes.MapRoute("default",
"{controller}/{action}",
new { controller = "Home", action = "Index" });
});
Thread threads = new Thread(func);
delegate void ParameterizedThreadStart(object obj); // если передается параметр
delegate void ThreadStart(); // если не передается
Dictionary<string, Action> funcs;
Thread threads = new Thread(funcs["имя функции"]);
// один раз инициализировали
var tcpListener = new TcpListener(IPAddress.Any, 8090);
tcpListener.Start();
tcpListener.BeginAcceptTcpClient(OnAcceptTCPClient, null); // Начали ждать коннектов
// На коннект клиента
private void OnAcceptTCPClient(IAsyncResult ar)
{
var client = tcpListener.EndAcceptTcpClient(ar);
new ClientReceiver(client); // Здесь будем асинхронно получать данные от клиентов.
lock (clients)
clients.Add(client); // сохранили для отправок
// начинаем ждать новых коннектов
tcpListener.BeginAcceptTcpClient(OnAcceptTCPClient, null);
}
ClientReceiver(TcpClient tcpClient) {
buffer = new byte[READ_BUFFER_SIZE];
stream = tcpClient.GetStream();
asyncResult = stream.BeginRead(buffer, 0, READ_BUFFER_SIZE, ReadStreamCallback, null);
}
// когда данные пришли
private void ReadStreamCallback(IAsyncResult ar)
{
int readed;
readed = stream.EndRead(ar);
AddData(buffer, readed); // обрабатываем, что получили
// запускаем новое ожидание
asyncResult = stream.BeginRead(buffer, 0, READ_BUFFER_SIZE, ReadStreamCallback, null);
}
<TextBox Text="{Binding UserName, UpdateSourceTrigger=PropertyChanged}" />