2011-10-03 104 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。

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