小编ret*_*ent的帖子

InvalidOperationException:Collection已被修改 - 尽管锁定了集合

我有一个同步哈希表,我定期从中删除一些条目.多个线程运行此代码.所以我锁定了整个foreach,但我仍然有时会得到InvalidOperationException:Collection被修改了......在Hashtable.HashtableEnumerator.MoveNext() - 即在foreach循环中.我究竟做错了什么?锁不够?

private static readonly Hashtable sessionsTimeoutData = Hashtable.Synchronized(new Hashtable(5000));

private static void ClearTimedoutSessions() { List keysToRemove = new List(); long now = DateTime.Now.Ticks; lock (sessionsTimeoutData) { TimeoutData timeoutData; foreach (DictionaryEntry entry in sessionsTimeoutData) { timeoutData = (TimeoutData)entry.Value; if (now - timeoutData.LastAccessTime > timeoutData.UserTimeoutTicks) keysToRemove.Add((ulong)entry.Key); } } foreach (ulong key in keysToRemove) sessionsTimeoutData.Remove(key); }

c# collections multithreading

7
推荐指数
1
解决办法
2658
查看次数

当wifi打开时,仅通过Android手机上的移动数据发送数据

即使 wifi 打开并连接到互联网,是否也可以通过移动数据以编程方式路由请求?

我的应用程序需要调用运营商提供的服务,该服务只能通过移动数据使用,我认为要求关闭 wifi 对用户不友好。

android android-networking android-wifi

5
推荐指数
1
解决办法
1150
查看次数

混淆使用IOC容器,服务定位器和工厂

假设我有一个BaseForm依赖于一个ILoggerIResourceManager或类似的东西.目前,它使用服务定位器解决了所需服务的正确实现,我知道这是一种反模式.

  • 是使用构造函数注入正确的方法来解决这种依赖?
  • 我是否必须BaseForm在容器中注册my (及其'派生类型)才能创建具有已解析依赖项的实例?这不是一切都复杂化吗?
  • 使用围绕服务定位器的静态工厂是不是很糟糕?
  • 除了单元测试之外,由于使用服务定位器反模式,我真的会受到惩罚吗?

很抱歉一次提出很多问题.我已经阅读了以下SO问题和许多其他问题,但阅读它们只会增加我的困惑:

dependency-injection anti-patterns ioc-container inversion-of-control service-locator

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

脚本WebBrowser控件中的脚本运行速度较慢

我在winforms应用程序中使用WebBrowser控件和Smooth Div Scroll来渲染html选框.我下载了样本并添加了

autoScrollingInterval: 3
Run Code Online (Sandbox Code Playgroud)

$("div#makeMeScrollable").smoothDivScroll({
    autoScrollingMode: "onStart"
});
Run Code Online (Sandbox Code Playgroud)

让它移动得更快 当我在IE中打开示例时它工作得很好但是当我使用WebBrowser控件并调用导航方法时,滚动条移动得慢得多.

是什么导致了这个问题?

c# jquery jquery-plugins webbrowser-control smooth-scrolling

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