Ich habe eine WPF-Anwendung..ToListAsync() vs .ToList() + Task.Run
Die Daten werden vom Repository zum ViewModel übertragen. Was wäre der bessere Weg, um die Daten abzurufen:
Methode 1:
In Repository:
public List<LogDetail> GetLogsOfTypeForCase(int caseId, LoggType logType)
{
using (var ctx = new SidraEntitiesNoChangesDetection())
{
var logs = (from l in ctx.Loggs
where l.log_fk_caseid == caseId && l.log_operation == logType.ToString()
select new LogDetail()
{
ColumnName = l.log_columnname,
DateAndTime = l.log_dateandtime,
IdentificationDetail = l.log_identificationDetail,
NewValue = l.log_new_value,
OldValue = l.log_old_value,
TableName = l.log_tablename,
UserCode = l.User.usr_code
}).ToList();
return logs;
}
}
In Ansichtsmodell:
await Task.Run(
() =>
{
if (false == this.CancellationTokenSource.IsCancellationRequested)
{
this.CaseLogs = this.dataAdapter.GetLogsOfTypeForCase(this.CaseId, LoggType.S);
}
},
this.CancellationTokenSource.Token
);
oder Methode 2
In Repository:
public async Task<List<LogDetail>> GetLogsOfTypeForCase(int caseId, LoggType logType)
{
using (var ctx = new SidraEntitiesNoChangesDetection())
{
var logs = await (from l in ctx.Loggs
where l.log_fk_caseid == caseId && l.log_operation == logType.ToString()
select new LogDetail()
{
ColumnName = l.log_columnname,
DateAndTime = l.log_dateandtime,
IdentificationDetail = l.log_identificationDetail,
NewValue = l.log_new_value,
OldValue = l.log_old_value,
TableName = l.log_tablename,
UserCode = l.User.usr_code
}).ToListAsync();
return logs;
}
}
und in Ansichtsmodell
protected override async void Load()
{
if (false == this.CancellationTokenSource.IsCancellationRequested)
{
this.CaseLogs = await this.dataAdapter.GetLogsOfTypeForCase(this.CaseId, LoggType.S);
}
}
Von dem, was ich gelesen habe, Methode 1 bevorzugt würde, aber was die Vorteile sein?
Wer das Verfahren 1 bevorzugt und was war ihr Beweis? –
Wenn Sie eine von ihnen gelesen haben würde bevorzugt werden, sicherlich sagten sie auch warum? Wenn Sie jemanden lesen, der sagt, dass etwas besser ist und nicht erklärt, gehen Sie zum nächsten Artikel. –
Wer auch immer sie sind, sollten Sie wahrscheinlich nie auf sie hören. Sie verstehen eindeutig nicht, wie die Task Parallel Library funktioniert ... –