C# wpf 异步添加子元素到 Layout
C# wpf adding children to Layout asynchronously
我有一个 WPF 应用程序,我是 运行 一个 returns 字符串序列的 powershell 脚本。我希望能够异步更新我的 UI,但是 UI 只会在该方法完成后更新。如何异步更新 UI?我一直在阅读很多其他类似的例子,比如这个: 也许这行得通,但我可能没有正确实施它?
我的代码:
private void NextButton_Click(object sender, RoutedEventArgs e)
{
RunPreCheck();
}
public void RunPreCheck()
{
var startInfo = GetPowerShellStartInfo();
proc = Process.Start(startInfo);
while (!proc.StandardOutput.EndOfStream)
{
string line = proc.StandardOutput.ReadLine();
var myObject= new MyCustomObject(line);
myGrid.Children.Add(myObject);
}
}
运行 RunPreCheck()
在后台线程上:
private void NextButton_Click(object sender, RoutedEventArgs e)
{
Task.Run(RunPreCheck);
}
public void RunPreCheck()
{
var startInfo = GetPowerShellStartInfo();
proc = Process.Start(startInfo);
while (!proc.StandardOutput.EndOfStream)
{
string line = proc.StandardOutput.ReadLine();
myGrid.Dispatcher.BeginInvoke(
new Action(() => myGrid.Children.Add(new MyCustomObject(line))));
}
}
我有一个 WPF 应用程序,我是 运行 一个 returns 字符串序列的 powershell 脚本。我希望能够异步更新我的 UI,但是 UI 只会在该方法完成后更新。如何异步更新 UI?我一直在阅读很多其他类似的例子,比如这个:
我的代码:
private void NextButton_Click(object sender, RoutedEventArgs e)
{
RunPreCheck();
}
public void RunPreCheck()
{
var startInfo = GetPowerShellStartInfo();
proc = Process.Start(startInfo);
while (!proc.StandardOutput.EndOfStream)
{
string line = proc.StandardOutput.ReadLine();
var myObject= new MyCustomObject(line);
myGrid.Children.Add(myObject);
}
}
运行 RunPreCheck()
在后台线程上:
private void NextButton_Click(object sender, RoutedEventArgs e)
{
Task.Run(RunPreCheck);
}
public void RunPreCheck()
{
var startInfo = GetPowerShellStartInfo();
proc = Process.Start(startInfo);
while (!proc.StandardOutput.EndOfStream)
{
string line = proc.StandardOutput.ReadLine();
myGrid.Dispatcher.BeginInvoke(
new Action(() => myGrid.Children.Add(new MyCustomObject(line))));
}
}