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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как подписаться на событие внутри метода? 
:(
    Опции темы
gogzor
Дата 26.9.2008, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем привет.
Ну вот я не силён никак в событиях... не понятно...
Вот объясните мне :

Есть код :
Код

private void btnSubmit_Click(object sender, EventArgs e)
{
    ReadOnlyCollection<string> items = mclass.GetStrings(myPath);

    foreach (string s in items)
    {
          Thread newTh = new Thread(ProcessItem);
          newTh.Start(s);
          newTh.Join();
    }
}

private void ProcessItem(object item)
{
     txCaptcha.Text = item as string;
}


Суть в том что цикл пробегает по всем елементам , и под каждый создаёт поток , который выполняет метод ProcessItem и ждёт завершения. Метод ProcessItem выводит в текстовое окно строку. Но когда я запускаю программу и нажимаю кнопку btnSubmit , в текстовой строке сразу оказывается последний элемент из списка.

Так вот как сделать так , чтобы метод ProcessItem ставил строку в поле и ждал нажатия кнопки OK? Тогда только ставился следующий элемент.

Т.е примерно так , я предполагаю , должен выглядеть код :
Код

private void ProcessItem(object item)
{
      txCaptcha.Text = item as string;
      //Здесь код ожидания button1_Click. КАК?
}


Спасибо.
PM MAIL   Вверх
QryStaL
Дата 27.9.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


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

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



Попробуй использовать Monitor.Wait(), Monitor.Pulse()

Это сообщение отредактировал(а) QryStaL - 27.9.2008, 12:10


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
gogzor
Дата 27.9.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



С помощью класса Monitor мне не удаётся слушать событие...Это же вроде бы не сложно , но вот как подписать метод на событие? В моём примере , чтобы пока не произошёл button1_Click метод ProcessItem не завершался. Пожалуйста помогите  smile 
PM MAIL   Вверх
source777
Дата 27.9.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

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



gogzor, задачу целиком и полностью опиши, а не то, как ты её пытаешься не решить! Нафиг тебе потоки, если процесс должен идти последовательно?


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
gogzor
Дата 27.9.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Задача :
Есть список элементов , надо по ним пробежаться и каждый отображать в TextBox'е. Т.е нужно отобразить элемент и ждать нажатия кнопки OK , потом следующий элемент из списка, и так все. Потоки не обязательны , это я так пытался решить проблему. Вообщем как мне решить эту задачу? Как слушать событие нажатия кнопки?
PM MAIL   Вверх
Hades
Дата 27.9.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



что-то типа такого
Код

private List<int> number;
private int curentPos;

public Form1()
{
    InitializeComponent();

    number = new List<int>();
    for (int i = 1; i < 11; ++i)
    {
        number.Add(i*i);
    }

    curentPos = 0;
    textBox1.Text = number[curentPos++].ToString();
}

private void button1_Click(object sender, EventArgs e)
{
    if (curentPos < number.Count)
        textBox1.Text = number[curentPos++].ToString();
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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