Евгений Иванов, странно, должен быть там же
using System.Windows.Threading;
// Для нестатического поля, метода или свойства "Dispatcher.Invoke(Action)" требуется ссылка на объект.
Dispatcher.Invoke(() => richTextBox1.AppendText(Environment.NewLine + "Фамилия=" + userSurname));
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.DirectoryServices;
using System.Diagnostics;
using System.IO;
using ExcelDataReader;
using System.Threading;
using System.Windows.Threading; // Тип или имя пространства имен "Threading" не существует в пространстве имен "System.Windows" (возможно, отсутствует ссылка на сборку).
using System.Threading;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
//..
Users.onUserAdd += (userSurname) =>
{
Dispatcher.Invoke(() => richTextBox1.AppendText(Environment.NewLine + "Фамилия=" + userSurname)); // Dispatcher не существует в текущем контексте.
};
public partial class Form1 : Form
{
//.......
private void Button1_Click(object sender, EventArgs e)
{
string data1= TextBox1.Text;
string data2= TextBox2.Text;
Users.onUserAdd += (userSurname) =>
{
richTextBox1.AppendText(Environment.NewLine + "Фамилия=" + userSurname); // Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'richTextBox1' не из того потока, в котором он был создан.
};
// Сообщаем метод Add с потоком и запускаем поток.
new Thread(() => Users.Add(data1, data2)).Start();
}
}
public class Users
{
public delegate void UserData(string userSurname);
public static event UserData onUserAdd; // Сделал статик
public static void AddUsers(string data1, string data1)
{
// Тут код добавления пользователя.
// Вывод фамилии добавленного пользователя в текстовое поле.
// Ошибка Для нестатического поля, метода или свойства "Users.onUserAdd" требуется ссылка на объект.
onUserAdd(userSurname); //упадет если никто не подписался
onUserAdd?.Invoke(userSurname); //не упадет если никто не подписался
}
в классе Users объявляем делегат и событие- ясно.
и ниже по тексту вызываем наше событие кодом следующего вида- написал этот код в методе, сообщаемом с потоком.
а в форме перед запуском треда назначаем обработчик- не понял, куда писать этот код.
public partial class Form1 : Form
{
//.......
private void Button1_Click(object sender, EventArgs e)
{
string data1= TextBox1.Text;
string data2= TextBox2.Text;
// Сообщаем метод Add с потоком и запускаем поток.
new Thread(() => Users.Add(data1, data2)).Start();
}
}
public class Users
{
public delegate void UserData(string userSurname);
public event UserData onUserAdd;
public static void AddUsers(string data1, string data1)
{
// Тут код добавления пользователя.
// Вывод фамилии добавленного пользователя в текстовое поле.
// Ошибка Для нестатического поля, метода или свойства "Users.onUserAdd" требуется ссылка на объект.
onUserAdd(userSurname); //упадет если никто не подписался
onUserAdd?.Invoke(userSurname); //не упадет если никто не подписался
}
'chat_id' => 'the_chat_id_here'
container" is already in use by container "45c2...". You have to remove (or rename) that container to be able to reuse that name.
И зачем такие сложности?
У тебя контейнер с MySQL подключен к сети site-app-network, а контейнер с PHP подключен к дефолтной сети.
docker run -d -p 80:80 -v C:/DATA/OpenServer/domains/site.local/DOCKER/app:/var/www/app --name=site-app-container site-app
docker network create -d bridge site-app-network
docker run -d -p 3306:3306 -v $(pwd)/.data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Pass0312345 --network=site-app-network --name=site-mysql mysql:5.7.24
из bash внутри контейнера?
winpty docker exec -it techmap3-mysql bash
mysql -u root -pPass0312345
Небось в конфиге указан localhost в качестве хоста MySQL
CREATE USER 'sqladmin'@'localhost' IDENTIFIED BY 'Pass0312345 ';
GRANT ALL PRIVILEGES ON * . * TO 'sqladmin'@'localhost';
FLUSH PRIVILEGES;
непрактично держать HTML и картинки в одном каталоге
use \Junior\classes\myclass as myclass;
Я без понятия, что тут имели ввиду и как это работает.
Раньше писал так
include __DIR__./'classes/myclass.php';
Про автозагрузчик идею понял (инклудим файлы php, в которых содержаться одноименные классы)
Но как использовать её в рабочем примере пока не знаю.
Как, где она вызывается?