Dispatcher dispatcherUI = Dispatcher.CurrentDispatcher;
dispatcherUI.Invoke(/*то что Вы собираетесь сделать*/);
Users.onUserAdd += (userSurname) =>
{
richTextBox1.BeginInvoke(() => richTextBox1.AppendText(Environment.NewLine + "Фамилия=" + userSurname));
};
Users.onUserAdd += (userSurname) =>
{
Dispatcher.Invoke(() => richTextBox1.AppendText(Environment.NewLine + "Фамилия=" + userSurname));
};
а в форме перед запуском треда назначаем обработчик
new Thread(() => Users.Add(data1, data2)).Start();
public delegate void UserData(string userSurname);
public event UserData onUserAdd;
onUserAdd(userSurname); //упадет если никто не подписался
onUserAdd?.Invoke(userSurname); //не упадет если никто не подписался
Users.onUserAdd += (userSurname) =>
{
richTextBox1.AppendText(Environment.NewLine + "Фамилия=" + userSurname);
};
textBox1.Text = Convert.ToDouble(textBox1.Text).ToString();
к примеру для цифр (номер дома, квартиры) сравниваем строго, для названий применяем Расстояние Левенштейна, или задаем правила сравнения что â == a == ă