对象引用编译错误

时间:2011-06-21 02:05:51

标签: c# wpf

private static void runantc_OutputDataReceived(object sendingProcess, DataReceivedEventArgs outLine)  
        {
            // Collect the sort command output.
            if (!String.IsNullOrEmpty(outLine.Data))
            {
                ProcoutputTextBlock.Dispatcher.BeginInvoke(new Action(() => { ProcoutputTextBlock.Text += outLine.Data; }, null));
            }
        }

嗨,在上面的代码中我遇到了错误@ ProcoutputTextBlock错误1非静态字段,方法或属性'WpfApplication1.Window1.ProcoutputTextBlock'需要对象引用

和@ () => { ProcoutputTextBlock.Text += outLine.Data; }, null 错误2预期的方法名称

任何人都可以启发我吗?

2 个答案:

答案 0 :(得分:2)

您的函数是static,这意味着它需要引用类的实例才能访问任何实例成员。由于我假设您的窗口ProcoutputTextBlockTextBlock,因此需要一个实例才能访问它。

另一个选择是使该函数非静态,但由于您没有显示如何附加此事件处理程序,我不知道这是否适合您。

答案 1 :(得分:1)

ProcoutputTextBlock是一个实例属性。您正在从静态方法runantc_OutputDataReceived访问实例属性。

要解决此问题,请从static声明中删除runantc_OutputDataReceived

要解决第二个问题,请删除第二个参数null。像这样:

ProcoutputTextBlock.Dispatcher.BeginInvoke(new Action(() => { ProcoutputTextBlock.Text += outLine.Data; }));

ProcoutputTextBlock.Dispatcher.BeginInvoke((Action)(() => { ProcoutputTextBlock.Text += outLine.Data; }));