by Anonymous » 17 Mar 2025, 14:33
Ich habe ein Projekt, bei dem ich versuche, einige Daten in einem Konstruktor zu füllen: < /p>
Code: Select all
public class ViewModel
{
public ObservableCollection Data { get; set; }
async public ViewModel()
{
Data = await GetDataTask();
}
public Task GetDataTask()
{
Task task;
//Create a task which represents getting the data
return task;
}
}
< /code>
Leider erhalte ich einen Fehler: < /p>
Der Modifikator Async < /code> ist für dieses Element nicht gültig < /p>
< /blockquote>
< /> Natürlich. />public async void Foo()
{
Data = await GetDataTask();
}
< /code>
Es funktioniert einwandfrei. Ebenso, wenn ich den alten Inside-Out-Weg benutze < /p>
GetData().ContinueWith(t => Data = t.Result);
< /code>
Das funktioniert ebenfalls. Ich habe mich nur gefragt, warum wir nicht auf
in einem Konstruktor direkt anrufen können. Es gibt wahrscheinlich viele (sogar offensichtliche) Kantenfälle und Gründe dagegen, ich kann mir einfach keine vorstellen. Ich habe auch nach einer Erklärung gesucht, kann aber keine finden.
Ich habe ein Projekt, bei dem ich versuche, einige Daten in einem Konstruktor zu füllen: < /p>
[code]public class ViewModel
{
public ObservableCollection Data { get; set; }
async public ViewModel()
{
Data = await GetDataTask();
}
public Task GetDataTask()
{
Task task;
//Create a task which represents getting the data
return task;
}
}
< /code>
Leider erhalte ich einen Fehler: < /p>
Der Modifikator Async < /code> ist für dieses Element nicht gültig < /p>
< /blockquote>
< /> Natürlich. />public async void Foo()
{
Data = await GetDataTask();
}
< /code>
Es funktioniert einwandfrei. Ebenso, wenn ich den alten Inside-Out-Weg benutze < /p>
GetData().ContinueWith(t => Data = t.Result);
< /code>
Das funktioniert ebenfalls. Ich habe mich nur gefragt, warum wir nicht auf [/code] in einem Konstruktor direkt anrufen können. Es gibt wahrscheinlich viele (sogar offensichtliche) Kantenfälle und Gründe dagegen, ich kann mir einfach keine vorstellen. Ich habe auch nach einer Erklärung gesucht, kann aber keine finden.