使用EventHandler检测变量变化?

时间:2009-10-06 18:10:48

标签: c# event-handling

如果使用值>更新变量,您会如何建议设置事件处理程序? 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 个答案:

答案 0 :(得分:5)

你的设计...... there is something wrong with it

你不能用事件来阻止方法的执行,所以我认为这不是一个好的解决方案。

你是多线程吗//Some code here?如果是这样,请检查Thread.Join(如果您正在使用重量级线程)或Monitor(如果您正在使用线程池)阻止执行GetPrice直到设置了值。

如果没有您正在做的事情的细节,我不确定是否有更好的解决方案。

答案 1 :(得分:2)