2010-11-18 48 views
0

我結合於類的獲得僅使用綁定源屬性(例如)數據綁定僅獲取屬性。 UI更新。的BindingSource

public bool IsRunning 
    { 
    get 
     { 
     return myThread!=null && myThread.IsAlive; 
     } 
    } 

。而綁定到它的控件並不反映只獲取屬性的更改。 我以爲我可以實現INotifyPropertyChanged接口,但似乎只能在setter 上工作(因爲您需要在該屬性更改時手動提升PropertyChanged事件)。
現在我有愚蠢的計時器運行和輪詢的變化。我可以做些什麼來自動化控制(或綁定源)以動態反映屬性值?

回答

1

繼續執行INotifyPropertyChanged的,但是當你的線程啓動引發事件和死亡 即:

bool _isRunning; 
bool IsRunning{ 
get{return _isRunning;} 
set{ 
    _isRunning=value; 
    Dispatcher.BeginInvoke(new Action(()=>PropertyChanged(this,new PropertyChangedEventArgs("IsRunning")))); 
} 

void foo(){ 
myThread=new Thread(doWork).Start(); 
} 

void doWork(){ 
    IsRunning=true; 
    try{ 
    // stuff 
    }finally{ 
    IsRunning=false; 
    } 
} 
+0

怎麼樣的情況,如果線程被中止? – Nickolodeon 2010-11-18 11:47:37

+0

Thread.Abort在目標線程上引發一個ThreadAbortException。我編輯瞭解決這個問題的答案。請參閱http://msdn.microsoft.com/en-us/library/system.threading.threadabortexception.aspx – 2010-11-18 12:09:34