2011-10-03 100 views
1

我有一个功能如下。如何控制BeginInvoke的状态?

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

在AddToCollection方法中,该值将被添加到Observable集合中。

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

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

回答

1

你有两个选择:

  1. 设置一些标志,一旦用户取消添加值,而忽略在此之后AddToCollection调用。
  2. 用Invoke替换BeginInvoke,并在添加被取消时返回false。当它返回false时停止调用Invoke。

因此,您可以在接收方或发送方停止此过程。