我最近ConditionalWeakTable<TKey,TValue>在我的搜索中遇到了一个IDictionary使用弱引用的类,正如这里和这里的答案中所建议的那样.
有一篇明确的MSDN文章介绍了该类,并指出:
您可以在System.Runtime.CompilerServices命名空间中找到类.... 它在CompilerServices中,因为它不是通用字典类型:我们打算只让编译器编写者使用它.
然后再说:
...有条件的弱表不是一个通用的集合...但是如果你正在编写自己的.NET语言并且需要公开将属性附加到对象的能力,你一定要查看条件弱表.
与此一致,该类的MSDN条目描述如下:
使编译器能够将对象字段动态附加到托管对象.
显然它最初是为了一个非常特定的目的而创建的 - 帮助DLR,System.Runtime.CompilerServices命名空间体现了这一点.但它似乎发现了更广泛的用途 - 即使在CLR中也是如此.例如,如果我在ILSpy中搜索ConditionalWeakTable的引用,我可以看到它在MEF类和内部WPF 类中使用.CatalogExportProviderDataGridHelper
我的问题是在编译器编写和语言工具之外是否可以使用ConditionalWeakTable,以及在未来的.NET版本中是否会产生额外开销或实现变化的风险.(或者应该避免使用像这样的自定义实现).
另外也进一步阅读这里,这里和这里有关如何ConditionalWeakTable利用一个隐藏的CLR实现的ephemerons(通过System.Runtime.Compiler.Services. DependentHandle)来处理键和值之间的周期问题,以及如何能够不容易在一个自定义的方式来完成.
我发现Spring WebSocket支持的当前文档指示用户使用stomp.js进行客户端JavaScript实现,这让我感到惊讶.
这个项目,在它的GitHub页面上的自述文件中说:
该项目不再维护.
如果您遇到错误或需要增强功能,您可以分叉并修改它,因为项目在Apache License 2.0下.
自2015年9月以来,该存储库没有任何提交(这只是为了将上述内容添加到自述文件中),并且自2014年12月以来没有代码提交,因此在过去的两年中它已被有效地放弃.
我不确定该存储库的284个分支中的哪个将是该库的稳定和最新版本,并且似乎没有可行的替代方案来自Google搜索.
有人可以推荐一个可以替代使用的稳定替代品吗?
理想情况下,我希望Spring团队能够为正确的客户端库提供一些指导,以便与他们的STOMP支持一起使用.
我有几个并发运行的进程,我想要登录到同一个文件.
我们一直在使用Enterprise Library 4.1 Logging Application Block(带有a RollingFlatFileTraceListener),它工作正常,除了它在两个进程同时尝试写入日志文件时为日志文件名添加GUID这一事实(a System.Diagnostics.TextWriterTraceListener我相信的怪癖).
我尝试了各种各样的事情,包括Logger.Writer.Dispose()写入日志文件后调用,但每次写入日志条目时都不适合进行阻塞调用.
EntLib论坛建议将MSMQ与分销商服务一起使用,但这不是一个选项,因为我的公司不允许使用MSMQ.
有没有其他方法可以快速轻松地从多个线程/进程登录到同一个文件?
我有一个TabControl在UserControl一个视图模型的支持,以及Visibility标签项目之一,必将对视图模型的属性.
<TabControl x:Name="myTabControl">
<TabItem Header="Tab 1" />
<TabItem Header="Tab 2" Visibility="{Binding HasData, Converter={StaticResource boolToVisibilityConverter}}"/>
</TabControl>
Run Code Online (Sandbox Code Playgroud)
当Visibility的TabItem变化,它缩短(隐藏)的TabItem报头,但是它继续显示其内容.
我想TabControl,以切换到可视选项卡时,其他选项卡是隐藏的,并且有点惊讶地发现,它不会自动发生.
将事件处理程序附加到节目的SelectionChanged事件上TabControl,TabItem.IsSelected(和TabControl.SelectedItem)在TabItem.Visibility更改时甚至不受影响(这是一个错误吗?!).
我试过了两个属性触发器:
<!-- This doesn't compile because of TargetName on the Setter, think you can only use it in Control Templates.
I don't know how to refer to the parent TabControl from within the TabItem …Run Code Online (Sandbox Code Playgroud)