к примеру Object.Method(a,b,c)
3 ответа 3
Если нужно запустить поток, передав несколько аргументов, то проще всего это сделать, создав новый класс.
Например использовать параметризированный конструктор потока Thread. Пример с МСДН. Чтобы передать несколько значений оберните их в класс и передавайте в метод.
На текущий момент (2018 год), для запуска нового потока проще всего использовать лямбда-функции:
При этом вам не нужно создавать класс-обёртку для ваших данных: данные хранятся в замыкании лямбда-функции.
Ещё более хорошим вариантом является использование TPL и async/await. При этом вы сможете легко возвращать данные из потока:
Есть класс. В поток есть возможность передать параметр. В примере ниже я туда передал строку и вывел ее в консоль. Но вот беда.. Мой экземпляр класса для потока не существует. То есть, я, конечно, могу создать еще один экземпляр класса в потоке и работать с ним, но хотелось бы как-то в поток передать тот экземпляр, с которым я работаю в main() . Необходимо иметь доступ к объектам класса и изменять их при определенных условиях. Например, из потока изменить значение bool checked и выполнить метод method1() .
Есть предположение, что вот так: (работает, но с тем же самым экземпляром я работаю?)
Потоку можно передавать один параметр типа Object. Это работает если тебе нужно передать переменную или строчку, но что делать если я хочу передать потоку параметр собственного типа?
Конструкция что то вроде этой
Код C#
static void Main(string[] args)
<
Line a = new Line(0, 5);
Thread LineThread = new Thread(Drawning);
Drawning(a);
>
static void Drawning(Object MyLine)
<
MyLine.YPos++;//ошибка Object не содержит YPos
class Line
<
public int xPOs;
public int yPos;