草庐IT

c# - 为什么我的应用程序随着时间的推移变得响应速度变慢?

我正在调试一个C#应用程序,它在几天后变得几乎没有响应。应用程序每秒计算一次内存/CPU使用率,并将其显示在主UI的底部。无响应的原因是获取PerformanceCounter(“WorkingSet-Private”)的RawValue需要时间。几天后,获取RawValue几乎需要一秒钟,卡住了主UI线程。如果我重新启动我的计算机,几天内一切都会再次变快,直到它慢慢变得不那么敏感。如果我在没有PerformanceCounter代码(它是开源的)的情况下重新编译这个应用程序,它会立即正常运行。要排除它是应用程序的可能性,这里有一些示例代码执行完全相同的操作:staticvoidMai

c# - 伙计,我的线程在哪里? (或 : rename a . NET 线程池线程 - 这可能吗?)

有时我发现自己在Debug模式下单步执行一个应用程序,直到我在某个特定的行上点击“步骤”,这会花费太多时间做某事,占用100%的CPU。在这一点上,我点击了“中断”按钮并尝试找出运行时间太长的程序。问题是,这个应用程序有大量的线程在运行,当我点击“中断”时,执行点转到了可能只是在“等待”的GUI线程。然后我必须搜索现有的线程(我数了数——这次是37个!)试图找到我正在执行的线程。我必须查看其中的每一个,直到找到我要找的那一个。我正在运行的线程是异步调用,因此它在线程池线程上运行。我想给这个线程一个描述性的名称,并在操作结束时重置它的名称。问题是,属性Thread.Name只能设置一次,

c# - 双向文件夹同步加密以保护我的 Dropbox 数据

我想写一个小的.NET脚本/工具,它至少大部分与SecretSync相同。或BoxCryptor,但没有将加密key存储在公司的网络服务器上。首先,这听起来很简单:您有两个文件夹——“解密”文件夹和“加密”文件夹。在这两个文件夹上都有一个FileSystemWatcher因此,当文件发生更改时,该工具会收到通知。如果“解密”文件夹中的文件发生更改,它会加密该文件并将其写入“加密”文件夹。如果“加密”文件夹中的文件发生更改,它会解密该文件并将其写入“解密”文件夹。目前没问题。但是,如果用户直接从“已解密”文件夹运行应用程序(例如KeePass),会发生什么情况?同步和加密过程现在会遇到问

c# - 如何在我的自定义表而不是 aspnet 用户中保存带有散列密码的新记录?

我正在使用asp.net身份创建新用户但出现错误:CannotinsertthevalueNULLintocolumn'Id',table'Mydb.dbo.AspNetUsers';columndoesnotallownulls.INSERTfails.\r\nThestatementhasbeenterminated但在这里我没有像AspNetUsers这样的表,而是我有自己的表,即Users。代码:Web.config:2个连接字符串IdentityModel.cs:publicclassApplicationUser:IdentityUser{publicasyncTaskGe

c# - 为什么我的 SqlCacheDependency HasChanged 返回 false 但几乎是在更改为 true 之后立即返回?

我不明白为什么我的SqlCacheDependency对象的HasChanged值最初从命令执行返回为false,但在它从数据库,值更改为true。有时这发生在项目被插入缓存之前,导致缓存立即丢弃它,有时它在插入之后,我可以获取一个枚举器,它看到缓存中的键,但在我循环到那个之前缓存中的项目已被删除。存储过程:ALTERPROCEDURE[dbo].[ntz_dal_ER_X_Note_SelectAllWER_ID]@ER_IDintASBEGINSELECTER_X_Note_ID,ER_ID,Note_IDFROMdbo.ER_X_NoteeWHEREER_ID=@ER_IDEND

c# - 如何在我的开发环境中从 Windows 7 x64 上的 C# 连接到 Oracle 数据库

我很难连接到Windows7x64上的Oracle数据库我的环境如下:Windows7x64VisualStudio2012Oracle10g(带32位客户端)WinForms我已将所有项目的objective-cPU明确设为x86CPU(与Any或x86相对)我正在使用DbProviderFactory.GetFactory进行连接我的app.config中的ConnectionString条目如下所示:(我试过各种样式的连接字符串都没有成功)当我编译应用程序时,如果我从Debug文件夹运行可执行文件,它能够正常连接。但是,如果我尝试在VisualStudio中运行它,当我打开连接时

c# - 我无法摆脱我的 ClipRectangle 我想哭

当覆盖自定义控件的OnPaint方法时,我得到了一个PaintEventArgs,其中包含一个Graphics对象和一个ClipRectangle。ClipRectangle对我来说太小了,所以我想要么将它扩展100像素,要么完全忽略它。无论我做什么,我似乎都无法突破ClipRectangle。到目前为止,我已经尝试过:e.ClipRectangle.Inflate(100,0);e.Graphics.ResetClip();e.Graphics.SetClip(newRectangle(x,y,w,h));父控件正在调用Invalidate(true)(强制使所有子控件的子控件失效)

c# - 当应用程序退出时,如何等待我的异步操作完成?

如果用户执行删除项目等操作,它会立即从UI中删除它们,然后使用TPL在后台线程上将它们从数据库中删除。问题是,如果用户在后台线程结束之前退出应用程序,则该项目实际上不会被删除。在关闭应用程序之前是否有等待异步操作完成的标准方法?我的异步调用是这样的:if(MyObjectList.Contains(obj))MyObjectList.Remove(obj);Task.Factory.StartNew(()=>DAL.DeleteObject(obj));更新这是我使用的最终代码。我很高兴看到它按预期工作,但如果我可以改进它,请告诉我。我还有很多东西要学:)publicpartialcl

c# - 为什么我的字节在加密算法的这个 C# 端口的第四轮不同?

我正在尝试将C++代码移植到C#并且在大多数情况下它都可以正常工作,但仅适用于循环的前3轮。在第四轮,输入block的字节开始不同,我不明白为什么。如果我们假设C++版本是正确的实现,为什么C#代码在第四轮给出不同的结果。下面是我的结果和代码(C++/CLR和C#的控制台应用程序)我认为输入block在传递给AES之前在每一轮中创建的方式有所不同(在C++中,有一种方法可以转换为基数256,to_base_256和from_base_256)但在C#中,我将基本256字节数组直接转换为BigInteger,然后再转换回字节数组。我只是不知道为什么每个人都会在前3轮中产生相同的输入blo

c# - 委托(delegate)、Lambda 和 LINQ,我的天哪!

作为一名相当初级的开发人员,我遇到了一个问题,它凸显了我缺乏经验和知识上的漏洞。如果这里的序言太长,请原谅。我发现自己在一个项目中需要学习许多(对我来说)新技术,包括LINQ(为了这个项目的目的,到OBJECTS和XML)等等。到目前为止我读到的所有内容都表明,要使用LINQ,我需要完全理解以下内容(委托(delegate)、匿名方法和Lambda表达式)。好的,现在有趣的来了。我过去使用.NET事件模型时使用过委托(delegate),但大部分细节对我来说是隐藏的(感谢Microsoft!)。我知道在基本层面上,委托(delegate)实例是指向方法的指针(我知道这是一种严重的过度简