Biorąc pod uwagę ten kod ....Nie można uzyskać dostępu do metody niestatycznej w kontekście statycznym?
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
}
}
Dlaczego otrzymuję błąd „nie można uzyskać dostępu do metody niestatyczny BeginInvoke w kontekście statyczne”?
Przyjrzałem się kilku innym przykładom na temat SE i większość cytuje próbę użycia pola, zanim obiekt zostanie utworzony, tak jakby próbowali użyć statycznego pola niestatycznego, ale nie rozumiem co chodzi o to, że mój kod wywołuje ten sam błąd.
Wreszcie, co mogę zrobić, aby rozwiązać ten konkretny problem/kod?
Aktualizacja: Naprawiono tytuł odzwierciedlający problem z "metodą", a nie "właściwością". Dodałem także, że klasa implementuje ViewModelBase.
Należy zauważyć, że można używać WPF bez obiektu "Application", w którym to przypadku 'Application.Current' ma wartość' null', co oznacza, że bezpieczniejsza metoda nie będzie działać. – hvd
@hvd Tak, jednak powinno się to zdarzyć tylko w wyjątkowych przypadkach (np. Hostowanie treści WPF w aplikacji WinForm). W przeciwnym razie przechodzenie do zwykłych aplikacji WPF i brak instancji klasy "Application" niesie ze sobą wiele problemów (takich jak ten i związanych z zasobami). –
Pewnie, zgodzili się. I nawet w takim przypadku, jeśli jakiś kod potrzebuje obiektu 'Application', możliwe jest jawne utworzenie go w punkcie wejścia, co będzie działało dobrze. – hvd