Dato questo codice ....Impossibile accedere al metodo non statico in contesto statico?
public class CalibrationViewModel : ViewModelBase
{
private FileSystemWatcher fsw;
public CalibrationViewModel(Calibration calibration)
{
fsw = new FileSystemWatcher
{
Path = @"C:\Users\user\Desktop\Path\ToFile\Test_1234.txt",
Filter = @"Test_1234.txt",
NotifyFilter = NotifyFilters.LastWrite
};
fsw.Changed += (o, e) =>
{
var lastLine = File.ReadAllLines(e.FullPath).Last();
Dispatcher.BeginInvoke((Action<string>) WriteLineToSamplesCollection, lastLine); //line that cites error
};
}
private void WriteLineToSamplesCollection(string line)
{
// do some work
}
}
Perché mi appare l'errore, 'Impossibile accedere metodo non statico BeginInvoke nel contesto statico'?
Ho esaminato molti altri esempi su SE e molti citarono cercando di utilizzare un campo prima che l'oggetto venga creato come se stessero cercando di usare un campo non statico in modo statico, ma non capisco cosa riguarda il mio codice che sta invocando lo stesso errore.
Infine, cosa posso fare per risolvere questo problema/codice specifico?
Aggiornamento: titolo corretto per riflettere il problema con un "metodo" e non con una "proprietà". Ho anche aggiunto che la classe implementa ViewModelBase.
Si noti che è possibile utilizzare WPF senza alcun oggetto 'Application', nel qual caso' Application.Current' è 'null', il che significa che il modo più sicuro non funzionerà. – hvd
@hvd Giusto, tuttavia ciò dovrebbe accadere solo in casi eccezionali (come l'hosting del contenuto WPF in un'app winforms). In caso contrario, le normali applicazioni WPF e l'assenza di un'istanza della classe 'Application' portano molti problemi (come questo e le risorse relative alle risorse). –
Certo, d'accordo. E anche in questo caso, se qualche codice ha bisogno di un oggetto 'Application', è possibile crearlo esplicitamente nel punto di ingresso, che funzionerà perfettamente. – hvd