立即从进程回调输出更新列表视图 C# WPF

Posted

技术标签:

【中文标题】立即从进程回调输出更新列表视图 C# WPF【英文标题】:Update List view from Process callback output instantly C# WPF 【发布时间】:2018-07-29 01:03:03 【问题描述】:

我正在尝试从读取进程标准输出的回调函数更新我的列表视图。 我正在做这样的事情:

process.OutputDataReceived = function();

public void function() 
    this.Dispatcher.Invoke((MethodInvoker)() => 
        listview.Items.add(newItem);
    );

这会更新我的列表视图,但仅在进程完成时!

我希望它立即更新列表视图,但我不知道它是如何以及为什么不这样做的。

谢谢。

【问题讨论】:

那么您是如何从标准输出中读取数据的呢?请出示您的代码。 【参考方案1】:
public void StartProcess()

   var myProcessStartInfo = new ProcessStartInfo()
   
       UseShellExecute = false,
       FileName = exePath,
       CreateNoWindow = false,
       ErrorDialog = true
   ;
   var process = new Process();
   process.StartInfo = myProcessStartInfo;
   process.EnableRaisingEvents = true;
   process.OutputDataReceived += function;
   process.BeginOutputReadLine();
   process.WaitForExit();


public void function() 

   this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>  listview.Items.add(newItem);));

【讨论】:

以上是关于立即从进程回调输出更新列表视图 C# WPF的主要内容,如果未能解决你的问题,请参考以下文章

插入(或更新)到基表后视图是不是立即更新

选定的 WPF 列表框绑定仅更新视图中的项目

如何停止在WPF列表视图中每个项目输出的标签被重复。

C# WPF 我不能私下更新,但公众会

从 wpf 中的文件路径列表填充树视图

C# WPF - Listview 绑定不起作用