【发布时间】:2011-12-07 02:17:46
【问题描述】:
我觉得这真的很基本,但我遇到了这个问题。我正在使用Process 对象并订阅DataReceivedEventHandler。然后,此事件处理程序委托给另一个方法,在本例中为“DoSomething”,并且参数的签名是(Object sender, DataReceivedEventArgs args)。我需要做的是扩展一些东西,或者提供一些可以传递额外信息的东西。这是我当前的代码:
// an object of some type
MyCustomObject obj = new MyCustomObject();
// set up obj and Process
process.OutputDataReceived += new DataReceivedEventHandler(DoSomething);
public void DoSomething(Object sender, DataReceivedArgs args)
{
// do some stuff, however, I need the "obj" object passed in for work
}
我觉得这真的很琐碎,但不知道如何进行。我已经阅读了有关子类化“EventArgs”的信息,但不确定这将有什么帮助,或者如何更改“DoSomething”的签名以接受DataReceivedArgsExtended 参数,因为 DataReceivedEventHandler 需要一个带有 DataReceivedArgs 的方法
【问题讨论】:
-
您需要传递什么类型的附加信息? DataReceivedArgs 仅具有包含输出流的 Data 属性。
-
是的,但是我想将此输出写入位于标签页上的 winforms Richtextbox。我想通过标签页。我想创建多个进程运行,并且想传入TabPage,这样输出就只会输出到这里。现在我在“DoSomething”方法中有一个硬编码的“RichTextBox”。
标签: c# delegates event-handling eventargs