所以我有一个学术项目,我会做很多计算并将输出放到WPF textBox
。现在我真的不精通MVVM,我认为这是解决这个问题的正确方法,但我不是在寻找MVVM解决方案,因为代码结构无关紧要,只有输出很重要。
所以我需要对远程文件进行一些计算,这就是我将输出放到textBox
的方式:
private void btnParse_Click(object sender, RoutedEventArgs e)
{
int geTimerDelay = int.Parse(txtDelay.Text);
string ex = "";
Task.Factory.StartNew(() =>
{
//access the URLs in a suitable interval and process data
File.WriteAllText("data.txt",rootObject.timeSinceStartup.ToString());
});
Task.Factory.StartNew(() =>
{
//access the URLs in a suitable interval and process data
File.WriteAllText("data2.txt",rootObject.timeSinceStartup.ToString());
});
...
string ex = File.ReadAllText("data.txt") + "/n" + File.ReadAllText("data2.txt") ... ;
txtOut.Text = ex;
}
现在有没有保证只在生成所有必要文件后才会填充我的textBox?如果不是我怎么能这样做(再次冻结界面!)
是否有更简单和优雅的方式(再次,我没有MVVM背景,它只是学术代码:()?
事实是我需要每隔几秒运行一次子程序并更新textBox。
感谢。
答案 0 :(得分:1)
不,没有这样的保证。为什么不把所有功能都放在一个任务中呢?
Task.Factory.StartNew(() =>
{
//access the URLs in a suitable interval and process data
File.WriteAllText("data.txt",rootObject.timeSinceStartup.ToString());
//access the URLs in a suitable interval and process data
File.WriteAllText("data2.txt",rootObject.timeSinceStartup.ToString());
string ex = File.ReadAllText("data.txt") + "/n" + File.ReadAllText("data2.txt")... ;
txtOut.Text = ex;
});
您需要通过查找如何从非UI线程更新UI来纠正txtOut.Text分配。