qq_38973590 2022-03-15 20:35 采纳率: 0%
浏览 364

WPF 为什么使用了BeginInvoke依然卡死了?

问题遇到的现象和发生背景

我想用WPF运行命令行,然后实时获取命令行内容,并更新UI(TextBox)

问题相关代码,请勿粘贴截图
    public partial class MainWindow : Window
    {
        Process p;
        public MainWindow()
        {
            InitializeComponent();
            p = new Process();
        }

        private void importButton(object sender, RoutedEventArgs e)
        {
            this.Dispatcher.BeginInvoke(new Action(delegate    //开启新线程
            {
                p.StartInfo.FileName = "cmd.exe";
                p.StartInfo.UseShellExecute = false;//是否使用操作系统shell启动
                p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
                p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
                p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
                p.StartInfo.CreateNoWindow = true;//不显示程序窗口
                p.Start();//启动程序
                p.OutputDataReceived += P_OutputDataReceived;//添加事件委托
                p.WaitForExit();//等待程序执行完
                p.Close();//退出进程
            })).Wait() ;

        }

        private void P_OutputDataReceived(object sender, DataReceivedEventArgs outLine)
        {
            if (!String.IsNullOrEmpty(outLine.Data))
            {
                string filePath = outLine.Data;                               //实时获取内容

                Bean bean = (Bean)this.FindResource("textBean");
                bean.FilePath += filePath;                                            //改变FilePath,触发改变事件
            }
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            p.StandardInput.WriteLine("c:");//向已开启的命令行输入内容
        }
    }
运行结果及报错内容

但是运行后就卡死,能详细解答和指导一下么?

我的解答思路和尝试过的方法

我试过好多网上启用多线程的方法,但是没有什么好用的

我想要达到的结果

希望能完成功能

  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 创建了问题 3月15日

悬赏问题

  • ¥15 如何改进这个简易的模数转换程序
  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法