在帮助课堂时很好地使用异步方法

时间:2017-04-04 07:05:06

标签: c# wpf entity-framework asynchronous

所以我有一个Helper类用于使用EntityFramework访问数据库。在类中,我所拥有的主要是用于从DB检索数据的异步方法。方法如下所示:

public class Helper
{
     private static Context db = new Context();

     public async static Task<List<Something>> getSomethingAll()
     {
         var a = db.SomethingList.ToListAsync();
         return await a.ConfigureAwait(false);
     }

     .... //lots of other methods coming here
}

然后在我的WPF窗口代码隐藏中,我调用这样的方法:

List<Something> sthList= Helper.getSomethingAll().Result; //good concept?

//use of sthList...

我知道这不是使用异步方法的最佳方法。那么我应该在我的例子中做些什么来使它尽可能有用呢?或者这可能是好的用法?

1 个答案:

答案 0 :(得分:2)

这样的事情:

var sthList = await Helper.GetSomethingAllAsync();

//use of sthList...

这将使你回到正确的线程状态以恢复工作(例如,你可以触摸UI而不会爆炸),并且可能会非常僵局({{1}如果使用不当,可以做到这一点。)