Tag: .net

FTPClient如何删除目录?

我想删除FTP中的文件夹。 可以将FTPClient对象删除吗?

一次性用品,使用和尝试/捕捉块

今天有一个心理障碍,需要一只手validation我的逻辑并不是很好的。 传统上我会做类似这样的文件i / o: FileStream fs = null; // So it’s visible in the finally block try { fs = File.Open(“Foo.txt”, FileMode.Open); /// Do Stuff } catch(IOException) { /// Handle Stuff } finally { if (fs != null) fs.Close(); } 但是,这不是很优雅。 理想情况下,当我完成时,我想使用using块来处理文件流,但我不确定using和try / catch之间的协同作用。 这就是我想要实现上述内容的方式: try { using(FileStream fs = File.Open(“Foo.txt”, FileMode.Open)) { /// Do […]

现有图形到位图

我正在为一个交易软件(C#,winforms,.NET 3.5)编写一个插件,我想在一个面板(比如ChartPanel )上绘制一个十字光标,其中包含可能很昂贵的数据。 到目前为止我所做的是: 我在面板中添加了一个CursorControl 此CursorControl位于主绘图面板上方,以便覆盖整个区域 它的Enabled = false以便将所有输入事件传递给父ChartPanel 实现了Paint方法,以便在当前鼠标位置从上到下和从左到右绘制线条 当MouseMove事件被触发时,我有两种可能性: A)调用ChartPanel.Invalidate() ,但正如我所说,底层数据绘制可能很昂贵,这会导致每次移动鼠标时都重绘一次,这是错误的(但这是我可以做到这一点的唯一方法)现在) B)调用CursorControl.Invalidate()并在绘制光标之前,我将获取当前绘制数据的快照,并将其保留为光标的背景,每次光标需要重新绘制时,光标将被恢复…这是…… 我不知道该怎么做 。 2.B. 意思是: 将现有的Graphics对象转换为Bitmap (它(Graphics)是通过Paint方法给我的,我必须在它上面绘制,所以我不能创建一个新的Graphics对象……也许我弄错了,但那就是我理解的方式) 在绘制十字准线之前,从位图恢复图形内容并重新绘制十字准线 我无法控制绘制昂贵数据的过程。 我可以访问我的CursorControl及其通过API调用的方法。 那么有没有办法将现有的图形内容存储到Bitmap中并在以后恢复? 或者有没有更好的方法来解决这个问题? 决议:经过几个小时的反复试验,我想出了一个有效的解决方案。 我使用的软件存在许多问题,一般无法讨论,但主要原则很明确: 已经绘制的东西的现有图形不能直接转换为Bitmap,而是我必须使用@ Gusman的答案中首次提到的panel.DrawToBitmap方法。 我知道它,我想避免它,但最后我不得不接受,因为它似乎是唯一的方式 我也希望避免每一帧的双重绘制,因此第一个十字准线颜色总是直接绘制到ChartPanel 。 在鼠标移动而不更改图表图像后,我通过DrawToBitmap进行DrawToBitmap ,并按照所选答案中的描述继续操作。 控件必须是不透明的(未启用透明背景),以便刷新它不会在它的父控件上调用Paint(这会导致整个图表重绘) 我每隔几秒左右仍会偶尔出现闪烁现象,但我想我能以某种方式解决这个问题。 虽然我选择了Gusman的答案,但我要感谢所有参与者,因为我使用了其他答案中提到的许多其他技巧,比如Panel.BackgroundImage,使用Plot()方法代替Paint()来锁定图像等。

C#重载返回类型 – 推荐方法

我有一种情况,我只希望返回类型与方法重载不同,但你不能在C#中这样做。 处理这个问题的最佳方法是什么? 事实是我需要这个意味着我的程序结构存在缺陷吗? 鉴于在C#中这是不可能的,推荐的方法是什么?

C#将不同版本的程序集加载到同一项目中

我正在创建一些执行NUnit等多个操作的工具。 在这个工具里面,我打开.dll程序集并调用方法形成它来运行一些测试。 一切都好,直到我需要重新加载.dll,程序重启。 我们的想法是,当工具运行时,我们将所需的程序集复制到一些临时文件夹并从那里调用。 如果我需要重新加载,我将另一个复制到另一个临时文件夹,并尝试从另一个文件夹加载新复制并加载到以前的程序集对象 ExecutingAssembly = Assembly.LoadFrom(AssemblyFullPath); 但我的问题是,在我将AssemblyFullPath更改为新的并调用Assembly.LoadFrom之后,它只返回旧程序集第一次加载的内容而不是第二次加载的内容! 也许问题是我们无法加载不同版本的几个程序集? 解决办法是什么?

C#generics如何影响具有基元的集合

据我了解,C#/ .Netgenerics支持某种程度的具体化。 所以,如果我有以下代码: List list = new List(); list.Add(1); 值1是自动装箱还是’list’对象会有效地处理原始int?

在Asp.Net Mvc中从数据库下载文件

我将我的文件存储在数据库中,需要在单击按钮时下载文件。 我可以在动作方法中获取文件内容(二进制)。 但是如何将其作为文件返回给用户?

简洁轻量的API:.NET中的REST + JSON

简介:我需要知道.NET世界中是否存在REST + JSON的轻量级实现,它不使用WCF。 如果没有,我正在寻找一些有兴趣成立开源项目合资企业的人。 我不了解你,但是当它出现时我是WCF的忠实粉丝,我赞扬它的模块化和可扩展性的设计。 然而,随着我越来越频繁地使用它,基本问题开始暴露到我现在觉得它必须被废弃和重新设计的程度。 这似乎是一个很大的声明,但我相信这些是主要问题: 首先,WCF在内部使用SOAP作为消息,这意味着如果传输消息不是SOAP,我们就会为每次调用产生转换回SOAP的成本。 这是昂贵且耗时的。 转换传出消息需要“插入”消息检查器并“窃取”消息。 顾名思义,这是一个检查员(必须用于检查和记录),所以使用它来更改消息坦白说是一个黑客。 它是根据WSDL设计的,自2001年以来世界发生了很大的变化。实现REST也需要窃取消息。 WCF是根据WSDL设计的,而不是REST。 通道堆栈不必要地很重。 主堆栈是协议不可知的。 这不是一个优势,它是一个根本性的缺陷。 如您所知,稍后添加了对大量协议级别信息的访问,因为无法实现某些重要的用户方案。 例如,TCP中的客户端IP地址无法访问并在以后添加(现在可以使用perationContext.Current.IncomingMessageProperties [RemoteEndpointMessageProperty.Name]访问) 与其他平台的互操作性可能是一个问题。 现在看来很多设计正朝着JSON和REST的简单化方向发展。 我只是喜欢他们的简约,我可以看到我的洗衣机在5到10年内消耗JSON并提供REST服务! 我相信他们在.NET中的实现是一个黑客攻击,我们非常需要一个非常轻量级和简单的框架(因为它们简单且重量轻)来在IIS内部和外部托管REST + JSON服务。 我希望这样的框架存在,但如果没有,我真的很想与一些志同道合的人一起去做些什么。 所以你怎么看? 这样的框架是否存在? 如果没有,有人有兴趣吗?

我何时需要域名和域容器来创建PrincipalContext?

我正在开发一个C#.NET Framework库来访问活动目录。 我要做的一件事是获得所有AD用户,我看到: PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, domainName.Trim(), domainContainer.Trim()); 和 PrincipalContext principalContext = new PrincipalContext(ContextType.Domain); 使用以下代码返回相同的用户: // define a “query-by-example” principal – here, we search for all users UserPrincipal qbeUser = new UserPrincipal(principalContext); // create your principal searcher passing in the QBE principal PrincipalSearcher srch = new PrincipalSearcher(qbeUser); // find all matches foreach (var […]

如何确定远程驱动器是否有足够的空间使用C#写入文件?

如何确定远程驱动器是否有足够的空间让我在.Net中使用C#上传给定文件?