0

I have an href list and I run the command it looks up at this location (svn) asynchronously. In ProcessOnErrorDataReceived I have to add s + outLine to the list. I do not know how to do this. It is possible to send s to an event or I need to call a method synchronously.

Search(List<string> path) {
 foreach(var s in path){
   ...
   if (process.StartInfo.RedirectStandardOutput)
                process.OutputDataReceived += ProcessOnErrorDataReceived;
    }
  }

  private void ProcessOnErrorDataReceived(object sendingProcess,
                                  DataReceivedEventArgs outLine)
    {
        Process p = sendingProcess as Process;
        if (outLine.Data != null)
            list.Add(outLine.Data);  //Here +s
    }
Xia
  • 159
  • 10

1 Answers1

1

Try something like this. Here we create a closure and capture the locS value. So, when the even occurs, we can pass captured value to the ProcessOnErrorDataReceived

Search(List<string> path)
{
  foreach(var s in path)
  {
    ...
    if (process.StartInfo.RedirectStandardOutput)
    {
      var locS = s;
      process.OutputDataReceived += (sender,e) =>
         ProcessOnErrorDataReceived(sender, e, locS);
    }
  }
}

private void ProcessOnErrorDataReceived(object sendingProcess,
  DataReceivedEventArgs outLine, string s)
{
  Process p = sendingProcess as Process;
  if (outLine.Data != null)
      list.Add(outLine.Data + s);  //Here +s
}
Serg
  • 3,454
  • 2
  • 13
  • 17