[C#] TextBoxTraceListener
От: Хитрик Денис Россия RSDN
Дата: 21.07.06 14:24
Оценка: 65 (4)
Почти дублирую сообщение <b>krasin</b>.

Вот так может выглядеть простейший TraceListener, для вывода сообщений в TextBox.
Оригинальная версия не позволяла писать в лог из потока, отличного от потока формы.

Класс листенера:
public class TextBoxTraceListener : TraceListener
{
    private TextBox textBox;

    public TextBoxTraceListener(TextBox textBox)
    {
        this.textBox = textBox;
    }

    public override void WriteLine(string message)
    {
        string text = string.Format("{0}\r\n", message);

        Write(text);
    }

    private delegate void WriteCallback(string message);

    public override void Write(string message)
    {
        if (textBox.InvokeRequired)
        {
            WriteCallback d = new WriteCallback(Write);
            textBox.Invoke(d, new object[] { message });
        }
        else
        {
            textBox.AppendText(message);
        }
    }
}



В коде формы:
private void Form1_Load(object sender, EventArgs e)
{
    Trace.Listeners.Add(new TextBoxTraceListener(textBox1));
}


Везде, где надо писать логи:
Trace.WriteLine("lala");
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re: [C#] TextBoxTraceListener
От: Хитрик Денис Россия RSDN
Дата: 24.07.06 11:38
Оценка:
Здравствуйте, Хитрик Денис, Вы писали:

Сам себя поправляю. Если не хочется чтобы нить задания и нить пользовательского интерфейса друг друга ждали во время операции Trace, можно воспользоваться асинхронным вызовом:

public override void Write(string message)
{
    if (textBox.InvokeRequired)
    {
        WriteCallback d = new WriteCallback(Write);
        textBox.BeginInvoke(d, new object[] { message });
    }
    else
    {
        textBox.AppendText(message);
    }
}
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re: [C#] TextBoxTraceListener
От: varnav  
Дата: 05.09.07 10:47
Оценка:
ХД>Вот так может выглядеть простейший TraceListener, для вывода сообщений в TextBox.

Ооо, вот спасибо то!

ХД>Оригинальная версия не позволяла писать в лог из потока, отличного от потока формы.


Я был очень этим возмущён и никак не мог понять что ж делать то.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.