Так роутер есть Archer MR600, но в регионе проживания оказалась перегружена сотовая вышка и в тех.поддержке предложили роутер перенести в другую часть дома, чтобы он на другую вышку переключился.
Но вот таскать оборудование, что через LAN подрублено возможности нет.
IseeCollapse, Не совсем понимаю где вы закопались. )) Но что мешает сделать public event который будет дергаться при нажатии на кнопку внутри вашего UserControl. И к нему уже привязать делегат там где будет использоваться ваш контрол.
rPman, async/await не делает переключения контекста потока.
И все замыкаемые переменные сохраняются в обьект State Machine, который создается в куче, а не на стеке.
rPman "Когда компилятор видит async он сохраняет состояние (стек) и передает выполнение к очереди для других кусков кода (помеченный async)"
Не делается это, async это директива для компилятора, чтобы из функции сделать State Machine
enchikiben, Тогда лучше класс поиска с методом BeginStart и event свойством OnComplete. Только нужно создать SynchronizationContext чтобы event отдавался только через него. Также вместо Thread можно использовать task через Run.
Передаете единый CancallationToken и передаете его в serialPort.BaseStream.ReadAsync(...)
Первый обнаруживший token.cancel(), но нужно перехватывать OperationCancelledException
У вас мало информации предоставлено. Какой тип приложения WinForm, WPF, консольное или сервис, от этого зависит как сообщить об найденом порту.
Используйте обьекты синхронизации, чтобы при обнаружении нужного другие потоки сразу завершали работу.
public class User
{
static public int Id;
static public string Name;
static public string Login;
static public string Password;
}
Form2_Load и button1_Click -- Не соответствует code style
Form1.user.Id = textBox1.Text; -- доступ не к членам класса.
Возьмите себе ментора и он все обьяснит очень подробно.