Mam zrobione delegaty z Invoke, ale jak po nie sięgnąć z drugiej klasy?
OK, mam tak:
Klasa otrzymująca dane:
public delegate void UpdateLogDelegate(string logMessage);
public partial class MainWindow : Form
{
public UpdateLogDelegate UpdateLog;
public MainWindow()
{
InitializeComponent();
}
private void UpdateLogMethod(string logMessage)
{
if (this.richTextBox.InvokeRequired)
{
UpdateLog = new UpdateLogDelegate(UpdateLogMethod);
this.Invoke(UpdateLog, logMessage);
}
else
{
this.richTextBox.AppendText(logMessage);
}
}
//...
private void backgroundWorkerSynchronization_DoWork(object sender, DoWorkEventArgs e)
{
Synchronization Sync = new Synchronization();
Sync.UpdateLog = new UpdateLogDelegate(UpdateLogMethod);
Sync.performSomething();
}
Klasa, która powinna zgłaszać dane:
class Synchronization
{
public UpdateLogDelegate UpdateLog;
private void performSomething()
{
//........
AddTextToLog(env.NewLine + "Połączenie z bazą danych z MSSQL zakończone powodzeniem!");
}
public void AddTextToLog(string logMessage)
{
UpdateLog(logMessage);
}
Przy próbie wywołania AddTextToLog w klasie Synchronization otrzymuję komunikat:
Object reference not set to an instance of an object
Który pokazuje na:
public UpdateLogDelegate UpdateLog;