小编Ale*_*lbu的帖子

.ToListAsync()vs .ToList()+ Task.Run

我有一个WPF应用程序.

数据从存储库传递到ViewModel.检索数据的更好方法是什么:

方法1:

在存储库中:

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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

在ViewModel中:

await Task.Run(
            () =>
            {
                if (false == this.CancellationTokenSource.IsCancellationRequested)
                {
                    this.CaseLogs = this.dataAdapter.GetLogsOfTypeForCase(this.CaseId, LoggType.S);
                }

            }, …
Run Code Online (Sandbox Code Playgroud)

c# wpf async-await

4
推荐指数
1
解决办法
5326
查看次数

使用Task加载数据仍会挂起UI

我有一个带有几个选项卡的WPF表单.当我加载表单时,我也尝试在后台加载一些数据选项卡.

代码如下所示:

public static List<MyModel> GetCaseNotes(int someId)
{
   return GetCaseNotesAsync(debtorId).Result;
}

public static async Task<List<MyModel>> GetCaseNotesAsync(int someId)
{
     Task<List<MyModel>> tsk = Task.Run(() => GetCaseNotesFromDb(someId));


     return await tsk.ConfigureAwait(false);

}

public static List<MyModel> GetCaseNotesFromDb(int debtorId)
{

   //get some data from database
}
Run Code Online (Sandbox Code Playgroud)

但是,UI仍在等待从数据库中获取数据......有什么想法吗?

c# asynchronous async-await

0
推荐指数
1
解决办法
533
查看次数

标签 统计

async-await ×2

c# ×2

asynchronous ×1

wpf ×1