2010-11-18 3 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

+0

Thread.Abortは、ターゲットスレッドでThreadAbortExceptionを発生させます。私はこれを世話するために答えを編集しました。 http://msdn.microsoft.com/en-us/library/system.threading.threadabortexception.aspxを参照してください。 –

関連する問題