首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows Phone 8本地数据库线程安全

Windows Phone 8本地数据库线程安全
EN

Stack Overflow用户
提问于 2014-04-01 12:14:24
回答 1查看 198关注 0票数 0

我有一个WP8应用程序,它有多个线程(有时多达40个),这些线程必须从webservice获取数据,然后提交到localdb。

我实现了一个基于AutoResetEvent的模式,其中每个Repository方法看起来有点像这样:

代码语言:javascript
复制
 public class MySuperAppRepository
  {
   public static AutoResetEvent DataAccess = new AutoResetEvent(true);

   public MyFancyObject CreateMyFancyObject(string path, int something)
   {
    DataAccess.WaitOne();
    try
    {
      using (var dbContext = new   MySuperAppDataContext(MySuperAppDataContext.DbConnectionString))
      {
        var mfo = new MyFancyObject();
        dbContext.MyFancyObjects.InsertOnSubmit(mfo);
        mfo.Path = path;
        mfo.Something = something;
        dbContext.SubmitChanges();
        return mfo;
      }
    }
    finally
    {
      DataAccess.Set();
    }
  }
}

这一切都是美好和干净的,但一旦我得到多个线程(如前所述),性能是可悲的。我可以得到很多请求下来,然后他们都在等待db是免费的。

还有更好的选择吗?使用lock(object)会提高性能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-01 14:59:16

您是否可以尝试不为每个数据操作创建一个新的DataContext。

还可以尝试一下提到的这里的一些最佳实践。

特别是:

使用版本列启用快速更新,优化表上更新操作性能的最简单方法之一是添加版本列。此优化特定于Windows的。例如,在实体中添加以下代码。

代码语言:javascript
复制
    [Column(IsVersion=true)]
    private Binary _version;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22785592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档