Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача параметров в поток и возврат результата 
:(
    Опции темы
Relrin
Дата 14.9.2012, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 20.2.2012

Репутация: нет
Всего: нет



Нужно распараллелить одну задачу и для этого передавать параметры в поток, а затем возвращать результат в виде double. Ошибка вот здесь:

Код

...
                    ForDistance pt = new ForDistance();
                    pt.x1 = pointClass[j].x;
                    pt.x2 = pointArray[i].x;
                    pt.y1 = pointClass[j].y;
                    pt.y2 = pointArray[i].y;
                    double res;
                    Thread thr = new Thread(delegate(){res=CalcDistance();}).Start(pt);
                    dist[j]=res;
...
private static double CalcDistance(object obj)
        {
            if (obj.GetType()!=typeof(ForDistance)) return 0;
            ForDistance pt = (ForDistance)obj;
            return Math.Sqrt(Math.Abs(Math.Pow((pt.x1-pt.x2),2)+Math.Pow((pt.y1-pt.y2),2)));
        }


Ошибка    1    Ни одна из перегрузок метода "CalcDistance" не принимает "0" аргументов
Ошибка    2    "Form1.CalcDistance(object)": не все ветви кода возвращают значение

Как их исправить?



PM MAIL   Вверх
lomaster
Дата 14.9.2012, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 27.5.2012

Репутация: нет
Всего: 2



Цитата

Как их исправить?
 Почитать как работать с потоками..

Да и вообще тут не 2, а больше ошибок.
PM   Вверх
Relrin
Дата 14.9.2012, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 20.2.2012

Репутация: нет
Всего: нет



Цитата(lomaster @ 14.9.2012,  16:49)
Цитата

Как их исправить?
 Почитать как работать с потоками..

Да и вообще тут не 2, а больше ошибок.

Довел до вида:
Код

...
                    ForDistance pt = new ForDistance();
                    pt.x1 = pointClass[j].x;
                    pt.x2 = pointArray[i].x;
                    pt.y1 = pointClass[j].y;
                    pt.y2 = pointArray[i].y;
                    double res;
                    Thread thr = new Thread(delegate(){res=CalcDistance();}).Start();
                    dist[j] = res;
...
private static double CalcDistance(object obj)
{
       if (obj.GetType()!=typeof(ForDistance)) return 0.0;
       ForDistance pt = (ForDistance)obj;
       return Math.Sqrt(Math.Abs(Math.Pow((pt.x1-pt.x2),2)+Math.Pow((pt.y1-pt.y2),2)));
}

Единственная ошибка:
Ошибка 1 Ни одна из перегрузок метода "CalcDistance" не принимает "0" аргументов
Как исправить ее?
PM MAIL   Вверх
lomaster
Дата 14.9.2012, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 27.5.2012

Репутация: нет
Всего: 2



Код

res=CalcDistance()

Код

CalcDistance(object obj)

Только это не поможет...

Это сообщение отредактировал(а) lomaster - 14.9.2012, 17:32
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1399 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.