2016-03-27 9 views
0

私のカスタムイベントに問題があり、私のUWPアプリケーションのテキストボックスを更新していません。私がTextbox1.Textをdebug.Writelineに置き換えれば、それは動作します。イベントを使ってテキストボックスを更新できない理由はありますか?私がProgressオブジェクトを使用する場合、それは機能します。私はちょうどそれがなぜ自分のカスタムイベントでうまくいかないのか理解しようとしています。ありがとうございましたC#カスタムイベントでクラスが更新されないTextbox

public sealed partial class MainPage : Page 
{ 
    public MainPage() 
    { 
     this.InitializeComponent(); 
    } 

    private void button_click(object sender, RoutedEventArgs e) 
    { 
     recData myRecDataobject = new recData(); 
     myRecDataobject.dataRecvEvent +=() => 
     { 
      textBox2.Text = "Event Occured"; // This throws an error 
      Debug.WriteLine("test2"); 
     }; 

     Progress<int> progress = new Progress<int>(); 
     myRecDataobject.getDataMethodAsync(progress); 
     progress.ProgressChanged += (o, result) => 
     { 
      textBox1.Text = result.ToString(); 

     }; 

    } 

} 

public class recData 
{ 
    public delegate void myEvenetHandlerDelegate(); 
    public event myEvenetHandlerDelegate dataRecvEvent; 


    private int _myValue; 
    public int myValue 
    { 
     get 
     { 
      return _myValue; 
     } 
     set 
     { 
      _myValue = value; 
     } 
    } 

    public async void getDataMethodAsync(Progress<int> progress) 
    { 
     await getDataMethod(progress); 
    } 

    private Task getDataMethod(IProgress<int> progress) 
    { 
     return Task.Factory.StartNew(() => 
     { 
      for (int i = 0; i < 1000; i++) 
      { 
       Task.Delay(2000).Wait(); 
       if (dataRecvEvent != null) 
       { 
        dataRecvEvent(); 
        progress.Report(i); 
       } 

      } 

     }); 
    } 


} 
+0

これは、スローされるエラーは何ですか? – m1o2

答えて

1

XAMLプロパティをバックグラウンドスレッドから更新しようとしています。これは動作しません(あなたのエラーは「アクセス拒否」である必要があります)。

Dispatcher.BeginInvokeを使用して、UIスレッドでTextBoxプロパティの更新をスケジュールします。

+0

ありがとう、申し訳ありません、ちょうど戻ってきました。 – user3363744

+0

進捗状況はなぜ機能するのですか? – user3363744

+0

キャプチャされたSynchronizationContextでイベントを発生させるためには、(https://msdn.microsoft.com/en-us/library/hh193692(v = vs.110).aspx)[ドキュメント化されているためです。 –

関連する問題