Вы можете сделать общедоступный метод в своей форме. А также сделать его потокобезопасным, если он вызывается из потока, отличного от потока пользовательского интерфейса.
Как другой класс получает доступ к вашему методу, зависит от того, как работает ваше приложение, и отношения между классом формы и другим классом.
public void SetText(string text)
{
// InvokeRequired required compares the thread ID of the
// calling thread to the thread ID of the creating thread.
// If these threads are different, it returns true.
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.tbx_Log.Text = text;
}
}
Для полной выборки и объяснения потокобезопасных звонков на WinForms проверить MSDN, который также показывает, как использовать BackgroundWorker для достижения потокобезопасности, которая является предпочтительным способом сделать это.
Итак, должен ли я создать объект моей формы, такой как это окно ReconcilerConsoleWindow = new ReconcilerConsoleWindow(); в каждом классе для доступа к SetLogText? – xbonez
Нет, объекты являются экземплярами класса и создаются с новым. Если вы сделаете это так, как вы говорите, вы получите «n» разные объекты класса «ReconcilerConsoleWindow». В большинстве случаев вам нужно будет предоставить классы с помощью 'ReconcilerConsoleWindow' с свойством для установки' ReconcilerConsoleWindow'. Таким образом вы можете установить один и тот же объект 'ReconcilerConsoleWindow' для нескольких объектов, используя его. – jdehaan