添加参数到事件处理程序。

时间:2014-02-14 21:03:12

标签: c# event-handling

我有这个代码。

recognizer.SpeechRecognized +=
                      new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);


 static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            if (e.Result != null && e.Result.Text != null)
            {

                Console.WriteLine("  Recognized text =  {0}", e.Result.Text);
                File.WriteAllText("text/text.txt", e.Result.Text);
            }
            else
            {
                Console.WriteLine("  Recognized text not available.");
            }
        }

我想在我的代码中添加一个要添加的参数,例如myData将在函数中显示,以便我也可以使用文本进行打印。

2 个答案:

答案 0 :(得分:0)

修改方法以接受您实际需要的参数:

static void recognizer_SpeechRecognized(
    SpeechRecognizedEventArgs e, string myData)

然后使用lambda来分配事件处理程序,传递适当的参数,并关闭你拥有的任何数据:

string myData = "hello world";
recognizer.SpeechRecognized += 
    (s, args) => recognizer_SpeechRecognized(args, myData);

答案 1 :(得分:0)

您可以考虑将myData作为具有此处理程序的类中的字段。并使这个处理程序非静态。

我不建议乱砍你的方式并通过处理程序传递myData