- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个应用程序,它有一个 ConcurrentQueue 项目,每个项目都有一个 ID 属性和一个 ConcurrentQueue 任务,队列项目看起来像:
class QueueItem {
public int ID { get; set; }
public ConcurrentQueue<WorkItem> workItemQueue { get; set; }
}
队列本身看起来像:
ConcurrentQueue<QueueItem> itemQueue;
我有一个线程在 itemQueue 上执行 foreach,从每个队列中取出一个项目并对其进行处理:
foreach(var queueItem in itemQueue) {
WorkItem workItem;
if (queueItem.workItemQueue.TryDequeue(out workItem))
doWork(workItem);
else
// no more workItems for this queueItem
}
我正在使用 ConcurrentQueues,因为我有一个单独的线程,可能会将 queueItems 添加到 itemQueue,并将 workItems 添加到每个 workItemQueue。
当我在 queueItem 中没有更多的 workItem 时,我的问题就来了——我想从 itemQueue 中删除那个 queueItem——比如……
if (queueItem.workItemQueue.TryDequeue(out workItem))
doWork(workItem);
else
itemQueue.TryRemove(queueItem);
...但我找不到轻松做到这一点的方法。我想出的方法是将每个 QueueItem 出队,然后如果 workItemQueue 中仍有 WorkItems,则将其入队:
for (int i = 0; i < itemQueue.Count; i++) {
QueueItem item;
itemQueue.TryDequeue(out queueItem);
if (queueItem.workItemQueue.TryDequeue(out workItem)) {
itemQueue.Enqueue(queueItem);
doWork(workItem);
}
else
break;
}
有没有更好的方法来使用 PFX ConcurrentQueue 来完成我想要的,或者这是一个合理的方法,我应该使用自定义并发队列/列表实现还是我遗漏了什么?
最佳答案
一般来说,没有有效的方法可以从队列中删除特定的项目。它们通常有 O(1) 的队列和出队,但 O(n) 的删除,这就是您的实现所做的。
另一种结构称为 LinkedHashMap。看看 Java implementation如果你感兴趣。
它本质上是一个哈希表和一个链表,它允许 O(1) 排队、出队和删除。
这还没有在 .Net 中实现,但是网络上有一些实现。
现在的问题是,为什么 itemQueue 是一个队列?从您的代码示例中,您永远不会从中入队或出队(除了绕过 Remove 问题)。我怀疑如果使用更合适的数据结构可以简化您的问题。您能否举例说明其他哪些代码段访问 itemQueue?
关于c# - PFX ConcurrentQueue - 有没有办法从队列中删除特定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/683956/
继承了一个VS2k5项目;它是作为 DLL 分发的 Outlook 加载项。 当我尝试编译项目时,它要求输入密码(我不知道),因为有一个受密码保护的 pfx 文件并且程序集已签名。由于我不知道密码,如
我找到了一个 answer that uses OpenSSL ,但我在 Windows 上,而且我不容易拿到它。有没有办法(例如使用 CERTUTIL 或 VBScript)查看 .PFX 文件中的
当您将 PFX 转换为 Base64,然后再将其转换回 PFX 时,是否有可能? $PFX_FILE = get-content 'dummy.pfx' -Encoding Byte [Convert
当您将 PFX 转换为 Base64,然后再将其转换回 PFX 时,是否有可能? $PFX_FILE = get-content 'dummy.pfx' -Encoding Byte [Convert
我丢失了 pfx 文件,但我有 .cer 文件并且我知道用于打开丢失的 pfx 文件的密码。如何生成 pfx?这可能吗? 最佳答案 只要您拥有该证书的私钥: 将 PEM 转换为 PFX: openss
我关注了这个 link 签署我的exe应用程序。 我在 Windows 7 上安装了 SDK 工具, 运行 C:\Program Files\Microsoft SDKs\Windows\v6.1\B
我需要在 .pfx 文件中上传合格的证书,我有 .req 和 .pfx 以及请求证书的私钥文件,并且我从执行这些操作的公司那里获得了合格的 .crt 证书。如何加入密码和具有合格根的证书? 我已经尝试
我有 Java 网络服务,并使用 Java Keytool 创建的 jks 文件实现了 X.509。 keytool -genkey -keyalg RSA -sigalg SHA1withRSA -
因此,我调用的 API 要求我将 pfx 证书链接到我的浏览器或 Postman(如果我调用该 API)。我想以编程方式执行此操作。如果 R 中有代码让我在传递 post 请求时使用我现有的 pfx
我搜索了 Stack,试图找到这个问题的答案。我基本上已经安装了证书,并且可以通过 chrome 访问 XML 文件,但我尝试使用 requests 将其直接拉入 python 中。 我只是使用 re
我试图用 PFX 强命名一个程序集也用于数字签名的文件。 PFX 证书具有 CodeSigning 选项,由 CA 提供。 . 当我尝试使用它时,出现以下错误: error MSB3325: Cann
PFX 包含以下类别的证书,它们是叶证书链的一部分。 颁发公共(public)证书(客户端/服务器) 中级 CA 证书 根 CA 证书 私钥 它可以有不属于链的证书吗? 最佳答案 是的,PFX/PKC
我的老板从 Comodo 获得了证书,我一直在努力寻找解决将证书放入 VB6 应用程序的问题的方法。证书本身采用 VB6 格式,我对此类事情几乎一无所知。 Comodo的人非常乐于助人(从我的老板那里
我花时间整理了诸如 these 之类的问题。 到目前为止没有运气。我的公司有一个我们使用的 VeriSign 的 pfx 文件。我将它添加到我的项目中并在添加时输入密码,然后检查我的解决方案。然后我转
我有一个 Azure 应用服务,我们已在其中上传(通过 Key Vault).pfx 文件以将它们添加到证书存储中。我们还添加了配置“WEBSITE_LOAD_CERTIFICATES”以在代码中访问
我正在尝试使用以下代码获取受密码保护的 pfx 文件的指纹: function Get-CertificateThumbprint { # # This will return a c
使用 CertUtil 将证书从 pfx 文件导入用户的个人存储相对容易: certutil –f –p [certificate_password] –importpfx C:\[certifica
您好,我正在尝试将我的 azure 网站连接到我购买的域(它是 .dk 域),但我无法找到需要通过门户上传到我的 azure 网站的 .pfx 证书文件。我具体需要做什么?我迷路了,谢谢。 最佳答案
我尝试通过 powershell 创建自签名代码签名证书,然后通过 Visual Studio 2017 将其作为 pfx 签署 .NET 程序集。使用 -ProtectTo 参数将 pfx 导出为受
如何从 .pfx 文件导入证书的私钥?我有这个代码: X509Certificate2 cert = new X509Certificate2("C:/amazon.pfx", "he
我是一名优秀的程序员,十分优秀!