Как я могу перенаправить вывод процесса на другую форму в DLL - PullRequest
0 голосов
/ 12 мая 2018

Я иду из Delphi в C #, я новичок в C #, у меня есть этот код, который хорошо работает:

// Форма1

public void Scan(string fOut)
{
    Form2 frm2;

    void SortOutputHandler(object sender, DataReceivedEventArgs e)
    {
        Trace.WriteLine(e.Data);
        this.BeginInvoke(new MethodInvoker(() =>
        {
             frm2.addItem(e.Data ?? string.Empty);
        }));
    }

    using (Process p = new Process())
    {
        frm2 = new Form2();
        frm2.Show(this);
        p.StartInfo.RedirectStandardError = true;
       // necessary code
        p.OutputDataReceived += new DataReceivedEventHandler(SortOutputHandler);
        p.Start();
        p.BeginOutputReadLine();
        while (!p.HasExited)
        {
            Application.DoEvents(); 
        }
        p.Close();
        frm2.Close();
        frm2.Dispose();
     }
}

// Форма 2

public void addItem(string line)
{
   listBox1.Items.Add(line);
}

private void Form2_Shown(object sender, EventArgs e)
{
   listBox1.Items.Clear();
}

Я хочу переместить код в dll, но не могу найти ссылку Form1, которая вызывает dllname.Scan ("fn.xxx"):

this.BeginInvoke..

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...