質問編集履歴

1 タイトルをより具体的に

ElecDove

ElecDove score 259

2020/01/21 11:20  投稿

WPFで時間軸に沿ってユーザにウインドウを表示したいと思いこんなソースを書いたのですがうまく動きません.
こういったことをやりたい場合どのようにするのが良いのでしょうか.
よろしくお願いいたします.
Task.Runにこだわっているわけではありません.私の知識ではこれを使うくらいしかひねり出せなかったためTask.Runを使用しています.
###やりたいこと
Startボタンを押すと,
MyWindow1が開く
1秒後にMyWindow1が閉じる
※MyWindow1は自分で追加した新しいウインドウです.
X秒後にMyWindow2が開く…
Y秒後にMyWindow2が閉じる…
以下繰返しMyWindow[N]まで続く… ※下記ソースにはMyWindow1しか書いていません
実際には,MyWindowが開いている裏でシリアル通信をしたり...メインウインドウのGUIを更新したり,,,したい
###どうなるか
MyWindowが開かない
Task.Runの外(前)でshowすればもちろん開く
```C#
private Button_Start_Click(object sender, RoutedEventArgs e){
var sw = new StopWatch(); //時間計測
sw.start();
bool flag = true;
Task.Run(()=>{
while(true){
var mw = new MyWindow();
Dispatcher.BeginInvoke((Action)(() =>{
mw.show(); //mwが表示されない
}));
if(sw.ElapsedMilliseconds > 1000 && flag){ //1000ms後に閉じてほしい
Dispatcher.BeginInvoke((Action)(() =>{
mw.close(); //そもそも表示してないので意味がない
}));
flag = false;
}
}
});
}
```
  • WPF

    1372 questions

    Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る