小编San*_*der的帖子

在BlockingCollection <T>上调用Dispose

我在Albahari的一本Nutshell书中重用了C#中的示例生产者消费者队列(http://www.albahari.com/threading/part5.aspx#_BlockingCollectionT),一位同事评论道:"为什么不调用Dispose关于收集处理中的BlockingCollection?"

我找不到答案,我能想出的唯一理由是不会处理队列剩余工作量的执行.但是,当我处理队列时,为什么不停止处理呢?

除了"为什么你不应该处理BlockingCollection?" 我还有第二个问题"如果你不处理BlockingCollection,会不会受到伤害?".我想当你产生/处理大量的生产者消费者队列时,它会产生问题(不是我想要的,而只是为了知道的原因). 根据BlockingCollection.Dispose实际做了什么?BlockingCollection包含两个等待句柄(显然),所以不调用Dispose会给你一些问题.谢谢ken2k指出这一点.

我正在谈论的代码:

public class PCQueue : IDisposable
{
  BlockingCollection<Action> _taskQ = new BlockingCollection<Action>(); 
  public PCQueue (int workerCount)
  {
    // Create and start a separate Task for each consumer:
    for (int i = 0; i < workerCount; i++)
      Task.Factory.StartNew (Consume);
  }

  public void Dispose() { _taskQ.CompleteAdding(); }

  public void EnqueueTask (Action action) { _taskQ.Add (action); }

  void Consume()
  {
    // This sequence that we’re enumerating will block when no elements
    // are available …
Run Code Online (Sandbox Code Playgroud)

c# dispose producer-consumer blockingcollection

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

如何在(App.config)connectionString中使用应用程序数据

我在一个项目中有一个SQL Server CE数据库,我不想将它存储在%AppData%目录中.但是我找不到在连接字符串中引用Application Data路径的方法(在App.Config中)

<?xml version="1.0"?>
<configuration>
  <configSections>
  </configSections>
  <connectionStrings>
    <add name="EntityConnectionString" connectionString="metadata=res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl;provider=System.Data.SqlServerCe.3.5;provider connection string=&quot;Data Source=|ApplicationData|\Entities.sdf&quot;" providerName="System.Data.EntityClient"/>
  </connectionStrings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)

到目前为止,我了解到:%APPDATA%不受支持,并且使用设置类(如建议的)也不起作用(在抛出异常时不构造设置类).

是否可以在connectionString属性中使用应用程序数据文件夹(或其他特殊文件夹)(在App.Config中)?

注意:我似乎正在寻找一种解决方案来尽早修改连接字符串(在代码中),而不是原生的App.Config解决方案.

c# connection-string app-config special-folders appdata

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