小编Mer*_*rus的帖子

将DLL嵌入已编译的可执行文件中

你知道,我在任何地方都没有看到一个好的答案.是否可以将预先存在的DLL嵌入到已编译的C#可执行文件中(这样您只能分发一个文件)?如果有可能的话,怎么去做呢?

通常情况下,我很酷,只是将DLL放在外面并让安装程序处理所有内容,但是有几个人在工作,他们问我这个,老实说我不知道​​.

.net c# dll merge linker

582
推荐指数
12
解决办法
35万
查看次数

C#中"尝试"的性能成本

我知道异常会对性能造成损失,并且尝试避免异常通常比放弃一切大尝试/捕获更有效 - 但是try块本身呢?仅仅声明try/catch的成本是多少,即使它从不抛出异常?

c# exception

21
推荐指数
4
解决办法
4492
查看次数

在C#中继承事件处理程序

我有点在这里支持自己.

我有一系列从父级继承的UserControl,它包含一些方法和事件来简化事情,因此我不必编写几乎相同代码的行和行.像你一样做.父级不包含其他控件.

我想要做的只是在父UserControl中有一个事件处理程序,它只执行父控件可以执行的操作(即,有条件地调用事件,因为父事件中定义了事件).然后我将这个事件处理程序连接到我的子控件中的所有输入框,子控件将解析输出的任务并告诉父控件是否抛出该事件.很好,干净,没有重复,复制粘贴代码(这对我来说总是会导致错误).

这是我的问题.Visual Studio认为我太聪明了一半,并警告我"方法'CheckReadiness'[父级中的事件处理程序]不能是事件的方法,因为这个类派生的类已经定义了方法." 是的,Visual Studio,这就是重点.我希望有一个事件处理程序,它只处理子类抛出的事件,它唯一的工作就是让我能够连接子代,而不必编写一行代码.我不需要那些额外的处理程序 - 我需要的所有功能自然被称为子进程处理用户输入.

我不确定为什么Visual Studio现在开始抱怨这个(因为它让我以前做过),而且我不确定如何让它消失.最好,我想这样做而不必定义一个只调用CheckReadiness的方法.造成这种警告的原因是什么原因导致它在一小时前没有出现,如何在不使用所有儿童班的小手柄的情况下让它消失?

c# events inheritance

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

保存SecureString

我正在处理的程序的一个功能请求是能够保存用户输入的凭据列表,以便可以共享它们.启发此请求的特定用例是在大型企业网络上使用我们的程序,该网络由相当好的LAN组成,这些LAN通过片状WAN连接.我们的想法是,不是让我们的程序在WAN关闭时击败WAN,而是发送一个包含严密保护的管理员凭据的"配置"文件,在每个局域网中运行并压缩结果并通过电子邮件发送给它背部.

是啊.

我最初的本能是嘲笑这个请求 - 保存密码?真?当然,公司的网络部门更愿意尝试销售他们拥有的任何广域网产品 - 但事实证明我使用凭证的其中一个类可以采用SecureString,而且,总是很好的关注你可以节省一些人的努力.这让我想知道:

是否可以保存加密的SecureString,以便我可以将敏感数据保存到文件中并在其他地方打开?

您有什么想法,Stack Overflow?

.net securestring

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

当你完成所有错误时,追踪内存泄漏的策略

唉,我的程序在某个地方有内存泄漏,但如果我知道它是什么,我会被诅咒.

它的工作是读取一堆~2MB的文件,进行一些解析和字符串替换,然后以各种格式输出它们.当然,这意味着很多字符串,因此进行内存跟踪表明我有很多字符串,这正是我所期望的.程序的结构是一系列类(每个都在自己的线程中,因为我是一个白痴),它们作用于代表内存中每个文件的对象.(每个对象都有一个输入队列,两端都使用锁.虽然这意味着我可以并行运行这个简单的处理,但这也意味着我有多个2MB对象位于内存中.)每个对象的结构都是由一个模式对象定义的. .

我的处理类在完成处理时引发事件,并传递对包含所有字符串的大对象的引用,以将其添加到下一个处理对象的队列中.使用函数调用替换事件以添加到队列不会阻止泄漏.其中一种输出格式要求我使用非托管对象.在类上实现Dispose()不会阻止泄漏.我已使用索引名称替换了对架构对象的所有引用.没有骰子.我不知道是什么导致它,不知道在哪里看.内存跟踪没有帮助,因为我看到的是一堆字符串正在创建,我没有看到引用在内存中的位置.

在这一点上,我们几乎要放弃并回滚,但我有一个病态的需要,确切地知道我是如何弄乱它的.我知道Stack Overflow无法完全梳理我的代码,但您可以建议哪些策略来跟踪此泄漏情况?我可能会在我自己的时间里这样做,所以任何方法都是可行的.

c# memory-leaks

7
推荐指数
2
解决办法
3023
查看次数

在一个DataTable上使用多个BindingSource

我有一个DataTable,它有一个名为[Invalid]的布尔列.我需要将此数据除以此无效列 - 有效行可以编辑,无效行不能.我原来的计划是使用两个BindingSources并设置Filter属性([无效] ="假",例如),发挥了送到我的手上,因为我有两个DataGridViews,所以我需要两个BindingSources反正.

这不起作用:BindingSources设置与DataTable关联的Filter属性,因此两个BindingSource都保存相同的数据.我将不得不从数据库中取两次,或者我可以用我拥有的对象做我想做的事情吗?

.net database

5
推荐指数
2
解决办法
4018
查看次数

从类名创建实例

我正在尝试在运行时创建一个类的实例.我正在尝试创建的类都继承自基类ConfigMgrObj,并且被命名为ConfigMgr_xxxxxxeg ConfigMgr_Collection.它们都采用一个特殊的对象,我正在调用oController和一个字符串作为参数.

这是我用来做它的行,其中ClassToGet是一个包含类名称的字符串,例如ConfigMgr_Collection.

object oNewObject = System.Activator.CreateInstance(null, "StackOverflowNamespace." + ClassToGet, new object[] { oController, ClassToGet });
Run Code Online (Sandbox Code Playgroud)

这会引发TypeLoadException异常.怎么了?

c# reflection

2
推荐指数
1
解决办法
1517
查看次数

强制ListView在后台绘制

我有一个ListView,有时我需要放入10000个项目.ListViews并不能很好地处理这个问题,并且他们在对项目进行排序并绘制它们时会锁定几秒钟.如果单独添加项目,则更糟糕的是,锁定将近一分钟.

为了解决这个问题,我想在我需要显示它之前尝试填充ListView,但不幸的是它还有其他想法.它只在我打开包含ListView的面板时才开始绘图,使程序挂起几秒钟.

关于如何消除这种延迟的任何想法?或者是否有另一个相对容易使用的组件,可以更好地显示大量数据?

.net listview

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