29得票5回答
如何捕获OutOfMemoryException异常?

我对于我们可以通过try/catch块来捕获OutOfMemoryException有一点困惑。 给定以下代码:Console.WriteLine("Starting"); for (int i = 0; i < 10; i++) { try { Ou...

7得票2回答
为什么“Finalize方法不应引用任何其他对象”?

我一直在思考为什么建议我们不要在finalize中释放托管资源。如果您查看http://msdn.microsoft.com/en-us/library/system.gc.suppressfinalize.aspx上的代码示例,并搜索字符串“Dispose(bool disposing) e...

7得票1回答
理解.NET应用程序的内存大小

我正在处理的一个应用程序在启动后占用了338MB的私有字节和780MB的虚拟字节。我试图理解是什么导致了这么多的内存使用,希望在理解后能够减小它的大小。这是一个32位的C#应用程序,在Windows7 64位上运行时获取到以上数据。 使用windbg打开转储文件显示堆大小为47MB。应用程序...

19得票3回答
.NET应用程序需要使用ret指令吗?

我注意到C#编译器在void方法的结尾处生成了一个ret指令:.method private hidebysig static void Main(string[] args) cil managed { // method body L_0030: ret } 我编写了一...

9得票3回答
ThreadPool.RegisterWaitForSingleObject会阻塞当前线程还是线程池线程?

阅读 ThreadPool.RegisterWaitForSingleObject 方法的文档,不清楚它是否: 在等待 EventWaitHandle 时阻塞当前线程,然后在线程池线程上委托 WaitOrTimerCallback,还是 委托线程池线程等待等待处理程序,然后在同一线程上执行...

17得票3回答
如何查看标记为“ MethodImplOptions.InternalCall”的方法的代码?

我使用ILSpy查看System.String的代码时,发现有一些方法被标记为MethodImplOptions.InternalCall,例如:[SecurityCritical] [MethodImpl(MethodImplOptions.InternalCall)] internal s...

7得票1回答
Windows Form作为非托管应用程序的子窗口

我正在寻找一种方法将用C#编写的Windows Forms应用程序嵌入到C++ Windows应用程序中。本机应用程序主窗口被细分为几个面板。 C#应用程序应出现在其中一个面板中,即C#组件的根窗口(最外层表单)必须是主应用程序的子窗口。 这可以实现吗?如果可以,怎么做? 一些额外的背景信...

7得票6回答
C#堆栈如何被CLR访问?

这可能是一个非常简单的问题,但我在SO上找不到答案,也不知道问过谁能得到答案: 我可以写出一个简单的C#方法,像这样: private void foo() { int a = 1; int b = 5; } 如果由编译器创建的CIL代码在公共语言运行时执行,它将在方法内部...

13得票2回答
实际文化是否与 SQL 到 CLR 浮点-双精度转换相关?

我正在处理一个ASP.Net WebForms遗留应用程序,并需要将一个新特性集成进去。我使用生成的DataSet(使用VS 2013)来连接ReportViewer和SQL Server(本地报表,rdlc)。 一切工作都很好,除了一个问题:浮点数转换。在两个Windows 8.1 En_...

8得票2回答
List<struct>与List<class>的性能比较

出于好奇心,我想测试使用值类型和引用类型的 List&lt;T&gt; 的性能表现。 结果并不如我所预期的那样,这让我认为我对于这些对象在内存中的布局理解可能是错误的。 我的实验如下: 1. 创建一个基本的 class 包含两个成员,一个 int 和一个 bool 2. 创建两个 Lis...