Tag: c#

为什么有HashSet但没有在C#中设置?

老问题 我的理解是C#在某种意义上具有HashSet和set类型。 我理解HashSet是什么。 但为什么set是一个单独的词? 为什么不是每个集合都是HashSet ? 新问题 为什么C#没有genericsSet类型,类似于Dictionary类型? 从我的角度来看,我希望有一个具有标准查找/添加/删除性能的集合。 我不关心它是用哈希还是别的来实现的。 那么为什么不在这个版本的C#中创建一个实际上被实现为HashSet的集合类,但在将来的版本中可能会有所不同? 或者为什么不至少接口ISet ? 回答 感谢所有回答如下的人: ICollection实现了很多你对ISet期望。 但是,从我的观点来看, ICollection实现了IEnumerable而集合不必是可枚举的—例如:1到2之间的实数集合(甚至更多,集合可以动态生成)。 我同意这是一个小咆哮,因为“普通程序员”很少需要不可数集。 好吧,我想我明白了。 HashSet绝对意味着被称为Set但在某种意义上保留了Set这个词。 更具体地说,.NET体系结构的创建者希望为不同的语言提供一致的集合(sic!)。 这意味着标准类的每个名称都不得与.NET语言中的任何关键字一致。 然而,在VB.NET中使用了这个词,它实际上是不区分大小写的(是吗?),所以不幸的是那里没有空间。 谜团已揭开 :) 结语 Alex Y的新答案链接到MSDN页面 ,该页面描述了即将推出的.NET 4.0接口ISet ,它的行为与我认为应该HashedSet并由HashedSet实现。 好结局。

.NET中的程序集独立序列化

我使用序列化/去序列化技术。 BinaryFormatter类。 每次创建新程序集时,即使类结构相同,BinaryFormatter也不能反序列化二进制数据,但程序集版本不同。 如果类结构保持不变,是否可以反序列化二进制缓冲区而不检查程序集版本?

是否可以创建部署为EXE或Windows服务的独立C#Web服务?

是否可以创建可以处理Web服务请求的C#EXE或Windows服务? 显然,某种嵌入式,可能有限的Web服务器必须是EXE /服务的一部分。 EXE /服务不必依赖于安装IIS。 优选地,嵌入式Web服务可以处理HTTPS / SSL类型连接。 场景是这样的:客户想要在他们的公司机器上安装一个小代理(Windows服务)。 代理将有两个主要任务:1)随着时间的推移监视系统并收集某些数据,以及2)响应Web服务请求(SOAP -v-REST仍然被讨价还价)以进行数据收集或系统更改。 客户喜欢Web服务API的概念,因此可以编写任意数量的客户端(使用任何语言)来访问公司计算机上运行的各种代理。 他们希望安装相对轻松(安装.NET,某些程序集,服务,修改Windows防火墙,启动服务),而无需安装和配置IIS。 我知道我可以用Delphi做到这一点。 但是如果可能的话,客户更愿意在C#中完成这项工作。 有什么建议?

多次调用同一Web服务阻止?

我们有一个页面向3’rd方Web服务发出请求。 当负载很重时,响应时间会显着延长,但是第三方报告说处理时间保持不变。 有时间表明,从他们收到请求到他们发回请求的时间总是大约1.5-2.0秒。 现在我们正在经历超过20秒的等待时间。 我对ASP.NET的理解是,每个请求都将在IIS线程池线程上运行,并向第3方服务返回并处理请求。 所以我真的不明白我们可能阻止什么。 有什么我想念的吗? IIS之外是否存在阻止的阈值限制? 如果我遗漏了某些内容,那么涵盖这个主题的实体书籍推荐也将是一个非常受欢迎的补充。

拜耳订购抖动

我正在为几个月前制作的Paint.net更新一个插件,它被称为模拟颜色深度,它将图像中的颜色数量减少到选定的BPP,并且很长一段时间它已经包含了抖动但是从未订购过抖动并且我认为这将是一个很好的补充,因此我开始在互联网上搜索有用的东西,我最终在这个维基页面http://en.wikipedia.org/wiki/Ordered_dithering ,并试图按照伪代码编写 for (int y = 0; x < image.Height; y++) { for (int x = 0; x < image.Width; x++) { Color color = image.GetPixel(x, y); color.R = color.R + bayer8x8[x % 8, y % 8]; color.G = color.G + bayer8x8[x % 8, y % 8]; color.B = color.B + bayer8x8[x % 8, y […]

为什么BackgroundWorker总是很忙?

我在WPF应用程序中的后台工作者中发现了一些奇怪的东西。 我现在要完成的是等到BW完成另一个线程。 检查以下代码: if (bw.IsBusy) { bw.CancelAsync(); System.Threading.ThreadStart WaitThread = new System.Threading.ThreadStart(delegate() { while (bw.IsBusy) { System.Threading.Thread.Sleep(100); } bw.RunWorkerAsync(); }); System.Windows.Application.Current.Dispatcher.Invoke( System.Windows.Threading.DispatcherPriority.Normal, WaitThread); // if I remove this line, bw fires RunWorkerAsyncEvent } else { bw.RunWorkerAsync(); } 请注意,我添加了Dispatcher.Invoke以等待bw不忙,但如果我调用它并且从不触发RunWorkerAsyncCompleted事件,则所有时间都很忙。 虽然,如果我删除该行,FIRES事件,这真的很奇怪。 我怎么能等到bw结束?

使用OpenXml创建分页符

我使用OpenXml创建Word文档,其中包含简单文本和本文下的一些表格。 如何强制使用此文本的Paragraph始终显示在新页面上? 也许这一段应该是一些标题,但我不知道该怎么做。 谢谢

从C#Web服务调用或调用C#控制台应用程序?

由于我的问题,我无法通过我的Web服务运行DOS命令。 C#web服务运行批处理文件还是dos命令? 由于我不能让我的web服务直接运行dos命令,我现在正在考虑创建将运行我的dos命令的C#控制台应用程序,然后控制台应用程序将由Web服务调用。 有可能这样做吗?

捕获不相关进程的输出

我只是想知道是否有可能捕获在Windows上运行的单独进程的输出? 例如,如果我有一个控制台应用程序运行,我可以运行第二个应用程序,一个表单应用程序,并让该应用程序捕获控制台应用程序的输出并将其显示在文本框中?

将dd / MM / yyyy转换为MM / dd / YYYY

我需要将“28/08/2012”转换为MM/dd/YYYY格式,即“08/28/2012”。 我怎样才能做到这一点? 我使用下面的代码,但它给我带来了exception。 DateTime.ParseExact(“28/08/2012”, “ddMMyyyy”, CultureInfo.InvariantCulture)