お世話になります。
UWPのタイマーハンドラー内において、Canvasへの操作を行うと例外を吐いてしまいます。
Visual Studio 2019 Communitynにて空白のアプリ(ユニバーサルWindows)のプロジェクトを作成、フォームにCanvasを貼り付け(名前をcanvas1とします)、以下のコードを実行します。
csharp
1using System; 2using System.Timers; 3using System.Windows; 4using System.Windows.Controls; 5using System.Windows.Shapes; 6using System.IO; 7using System.Timers; 8 9namespace test 10{ 11 public partial class MainWindow : Window 12 { 13 Rectangle rect = null; 14 int height = 0; 15 Timer timer = null; 16 17 public MainWindow() 18 { 19 InitializeComponent(); 20 21 rect = new Rectangle(); 22 rect.Width = 100; 23 rect.Height = 10; 24 rect.Fill = Brushes.Green; 25 canvas1.Children.Add(rect); 26 27 timer = new Timer(); 28 timer.Interval = 1000; 29 timer.Elapsed += new ElapsedEventHandler(TimerHandler); 30 timer.Start(); 31 } 32 33 public void TimerHandler(object sender, ElapsedEventArgs e) 34 { 35 Canvas.SetLeft(rect, 0); // ここで例外が発生 36 Canvas.SetTop(rect, height); 37 ++height; 38 } 39 } 40}
1秒間隔で緑の矩形が下にずれていくのを想定しているのですが、タイマーハンドラ内ではCanvasへのアクセスは禁じられているのでしょうか。
一定間隔でCanvasへ追加したオブジェクトの座標などを操作したいのですが、UWPではどの様に行うのが常識なのでしょうか。
以上、宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。