Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

.NET 4.x Передача в новый поток метода с параметрами из другого класса

90K
25 марта 2013 года
maxspace
1 / / 25.03.2013
Здравствуйте! Помогите, пожалуйста, решить такую задачу, есть 4 класса: Class1, Class2, Class3, Class4

Код:
namespace name
{
    public partial class Class1 : Form
    {
        public Class1()
        {
            InitializeComponent();
        }
 
        Class2 cl2 = new Class2();
        List<Class3> cl3;
        Class4 cl4 = null;
       
        public void Work(Class3 Clthree, Class4 Clfour)
        {
           .
           .
           .
           
            Class2.Job(ref Clthree, Clfour.var1); // необходимо запустить этот метод в нескольких потоках
           
           .
           .
           .
                         
        }
             
    }
}

Код:
[code=csharp]
namespace name
{
    public class Class3
    {
        .
        .
        .
       
    }
       
    public class Class4
    {
        .
        .
        .
       
        public double var1;
   
        .
        .
        .
    }  

}
Код:
namespace name
{
    public class Class2
    {
        .
        .
        .      
   
        public void Job(ref Class3 DoTheJob, double Amount)  
                                                             
        {
            .
            .
            .
           
        }                      
       
    }
}
мне необходимо запустить метод Class2.Job(ref Clthree, Clfour.var1); в нескольких потоках, подскажите, каким образом это можно реализовать?
62K
27 марта 2013 года
LWhisper
33 / / 27.11.2012
Любым из множества, о котором ты узнаешь вот здесь:
http://msdn.microsoft.com/ru-ru/library/6kac2kdh.aspx

Или простейшим new Thread(() =>Class2.Job(ref Clthree, Clfour.var1)).Start();
Только ref там явно лишний. Классы и так передаются по ссылке, а не по значению. А если ты будешь где-то в потрохах менять ссылку, то на уже переданных в другие потоки экземплярах это никак не скажется. Нужно заводить событие, которое будет информировать другие Job'ы о том, что ссылка изменилась и нужно заново взять данные.

P.S. Clfour.var1 => clfour.Var1 - имена локальные переменных с маленькой буквы, а публичных полей и свойств - с большой, а то у тебя не поймёшь - где имя класса, а где переменная. Создаётся ощущение, что код вообще написан с ошибками, раз по ref пытаются передать тип.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог