如何控制BeginInvoke的状态?

时间:2011-10-03 06:09:43

标签: wpf wpf-controls

我有如下功能。

private void AddPrice(String value)
{
Delegate del=new Action<String>(AddToCollection);
this.Dispatcher.BeginInvoke(del,DipatcherPriority.Background,value);
}

在AddToCollection方法中,该值将添加到Observable Collection中。

将根据用户输入调用“AddPrice”函数(例如,100次,200次,300次)。

Observable集合的最大数量是150.如果它达到150,我必须向用户弹出Messagebox并需要逐个添加值。但是,如果该函数被调用200次,则消息框将显示50次BeginInvoke。我怎么修改这个?谢谢。

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. 一旦用户取消添加值,设置一些标志,并在此之后忽略AddToCollection调用。
  2. 使用Invoke替换BeginInvoke,并在取消添加时返回false。当它返回false时停止调用Invoke。
  3. 因此,您可以在接收方或发送方停止此过程。