Использование EventHandler для обнаружения изменения переменной? - PullRequest
0 голосов
/ 06 октября 2009

Как бы вы порекомендовали мне настроить обработчик событий на запуск при изменении переменной со значением> 0.

public _price;

public double GetPrice(string item)
{
    _table.GetData += new EventHandler<EventArgs>(ExtractData);

    // Right now I set it to sleep to give it enough time to return the data.
    // But I would like to setup an eventhandler to return the _price when a value is populated
    Thread.Sleep(1000);

    return _price;
}

void ExtractData(object sender, DataEventArgs e)
{
    foreach (PriceRecord rec in e)
    {
        if (rec.myprc != null)
            {
                 _price = double.Parse(rec.myprc.Value.ToString());
            }
    }
}

Если я удаляю Sleep, у него не будет достаточно времени, чтобы получить данные, прежде чем вернуть неправильное значение. Я хотел бы удалить сон, чтобы повысить производительность и просто для себя. Если есть лучшие альтернативы, чем использование обработчика событий, я открыт для предложений.

Любые ваши предложения или советы приветствуются, Спасибо.

Ответы [ 2 ]

5 голосов
/ 06 октября 2009

Ваш дизайн ... что-то не так с ним .

Вы не можете заблокировать выполнение метода с событием, поэтому я не думаю, что это было бы хорошим решением здесь.

Вы многопоточны, где написано //Some code here? Если это так, отметьте Thread.Join (если вы используете тяжелый поток) или Monitor (если вы используете пул потоков), чтобы заблокировать выполнение GetPrice до значение было установлено.

Без подробностей того, что вы делаете, я не уверен, что есть лучшее решение.

2 голосов
/ 15 декабря 2009

http://ondotnet.com/pub/a/dotnet/2002/04/15/events.html

Очень полезная статья!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...