Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Модель передачи параметров потоку


Автор: GePo 24.8.2006, 23:03
У меня есть примерно такой класс( в обобщении  smile ):
Код

class foo
{
    private int a;
    private int b;
    private int c;
    private int Special;

   public void MainLoop()
  {
    .....
    Thread Child = new Thread(new ThreadStart( WorkThread ) );
    .....
  }

  private WorkThread()
  {

  }
}

теперь попытаюсь объянисть проблему. В классе есть множество полей и MainLoop может создавать много потоков. Каждый из них должен работать с одним и тем же набором полей, кроме одного ( int Special). Потоку нельзя назначать процедуру с параметром и в этом загвоздка.
Как сделать так, чтобы не было излишнего копирования данных( т.е. для каждого потока копировался только нужний Special )? (так, чтобы это было удобно в работе)

Что попытался сделать я:
Создал класс B, в котором была ссылка на A( без поля Special) и свой Special. Отлично, при создании потока создаю такой класс и делегат находится в классе B. Все бы хорошо, но неудобно работать с полями класса A. Каждый раз, нужно писать A.c, и т.д.


Автор: mr.DUDA 24.8.2006, 23:08
Почему бы не использовать делегат ParametrizedThreadStart, принимающий аргумент типа object ? Так можно передать потоку что угодно.

Автор: GePo 24.8.2006, 23:35
черт=) опять в мануале как следует не покапался. Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)