managed相关内容

C# 中的内存泄漏

当您确保所有句柄、实现 IDispose 的东西都被释放时,在托管系统中是否有可能泄漏内存? 会不会有一些变量被遗漏的情况? 解决方案 事件处理程序是非明显内存泄漏的常见来源.如果您从 object2 订阅 object1 上的事件,然后执行 object2.Dispose() 并假装它不存在(并从您的代码中删除所有引用),则 object1 的事件中有一个隐式引用将阻止 objec ..
发布时间:2022-01-16 09:29:30 C#/.NET

如何让 Visual Studios 构建系统了解托管 dll 的非托管依赖项?

在构建托管代码时,Visual Studio 正确(并且递归地)将引用的托管项目的 dll 复制到正在构建的项目的输出文件夹中. 但是,如果其中一个引用是依赖于非托管 dll 的托管 DLL,则这些非托管 DLL 不会复制到输出文件夹,即使它们在同一解决方案中的相应项目被列为托管 DLL 的依赖项. 我意识到这个问题可以通过让所有项目使用相同的输出文件夹来解决.我们已经为大多数项目这样 ..
发布时间:2022-01-15 23:10:35 其他开发

如何实现从非托管 DLL 到 .net 应用程序的回调接口?

在我的下一个项目中,我想为已经存在的 C++ 代码实现一个 GUI.我的计划是将 C++ 部分包装在一个 DLL 中,并在 C# 中实现 GUI.我的问题是我不知道如何实现从非托管 DLL 到托管 C# 代码的回调.我已经在 C# 中进行了一些开发,但是托管和非托管代码之间的接口对我来说是新的.谁能给我一些提示或阅读技巧或一个简单的例子来开始?不幸的是,我找不到任何有用的东西. 解决方案 ..
发布时间:2022-01-03 08:09:38 C#/.NET

检测混合环境中的内存泄漏(托管-非托管)

我有一个用 VC++ MFC 6.0 编写的应用程序.最近通过在 vs2008 中编译升级到 .NET 3.5,并通过使用托管和非托管环境向其中添加了一些 WPF 应用程序.基本上在 win32 窗口上托管 WPF.如果我只是打开一个 WPF 应用程序窗口,内存会以 1KB/10 秒的速度持续增长.我试过使用 .NET Memory Profiler &Ants 内存分析器.但是两者都没有帮助我检 ..
发布时间:2021-12-31 08:02:37 其他开发

C#中的内存泄漏

当您确保所有句柄、实现 IDispose 的东西都被释放时,在托管系统中是否有可能泄漏内存? 会不会有遗漏某些变量的情况? 解决方案 事件处理程序是非明显内存泄漏的一个非常常见的来源.如果您从 object2 订阅 object1 上的事件,然后执行 object2.Dispose() 并假装它不存在(并从代码中删除所有引用),则 object1 的事件中有一个隐式引用将阻止 obj ..
发布时间:2021-12-30 23:38:17 C#/.NET

是否可以在 C# 和非托管 C++ 之间共享枚举声明?

有没有办法在本机(非托管)C++ 和(托管)C# 之间共享枚举定义? 我在完全非托管的代码中使用了以下枚举: enum MyEnum { myVal1, myVal2 }; 我们的应用程序有时会使用托管组件.该 C# 组件通过托管的 C++ 互操作 dll(来自本机 dll)获取作为整数的枚举项值.(互操作 dll 仅在需要 C# 组件时才加载.)C# 组件复制了枚举定义: publi ..
发布时间:2021-12-29 16:37:56 C#/.NET

这个 DLL 是托管的还是非托管的?

我在你面前放着一个 DLL.只使用 Win32 SDK,你能告诉我这个 DLL 是 .NET 程序集吗? 为什么?我们的应用程序以 DLL 的形式加载插件.我们正在尝试扩展这些插件的定义以允许 .NET 程序集,但接口会有所不同,因此加载程序需要在加载之前知道 DLL 是托管的还是非托管的. 解决方案 您可以查看 PE 头信息,了解 DLL 中包含什么类型的信息.这篇文章详细描述了如 ..
发布时间:2021-12-25 16:09:19 C#/.NET

“管理"和“管理"之间的区别和“不受管理的"

我在谈论 .NET 时有时会听到/读到它,例如“托管代码"和“非托管代码",但我不知道它们是什么以及它们的区别是什么.根据定义,它们有什么区别?使用其中任何一个的后果是什么?这种区别是否仅存在于 .NET/Windows 中? 解决方案 托管代码 托管代码是 Visual Basic .NET 和 C# 编译器创建的.它在 CLR(公共语言运行时)上运行,它提供垃圾收集、运行时类型检 ..
发布时间:2021-12-05 19:32:26 C#/.NET

如何以托管方式获取 .NET 中的父进程

我一直在寻找在 .NET 中获取父进程的方法,但只找到了 P/Invoke 方式. 解决方案 这段代码提供了一个很好的界面来查找父进程对象,并考虑到多个进程同名的可能性: 用法: Console.WriteLine("ParentPid:" + Process.GetProcessById(6972).Parent().Id); 代码: public static class ..
发布时间:2021-12-01 09:49:02 C#/.NET

从 C++ 托管的 dll 抛出的 C# 异常 - EEFileLoadException * __ptr64

我从一个普通的 C# 控制台程序中得到这个错误,该程序使用作为 C++ CLI 项目的构建输出生成的 DLL.在那里我有一个简单的 DumbThing public ref class 和一个静态方法.我想简单地调用该函数或至少实例化一个小的 DumbThing 对象,然后看到 C# 可以调用它从 C++ CLI 生成的 DLL 中获取的代码,但它不起作用,因为它引发了一个让我更加困惑的错误: ..
发布时间:2021-11-25 06:53:59 C#/.NET

使用托管代码包装器从 64 位托管代码调用 32 位非托管代码的最佳方法

随着 64 位机器和应用程序的流行,我遇到必须从托管 64 位进程调用本机 32 位代码的情况的频率正在增加.我不想将我的应用程序标记为 32 位,而且我无法获得正在调用的代码的 64 位版本. 我目前使用的解决方案是创建在进程外加载的 C++ COM 垫片,以便从 64 位进程进行 32 位调用. 这个 COM shim 解决方案运行良好,跨进程调用由 COM 在后台处理,最大限度地 ..
发布时间:2021-11-24 23:57:46 C#/.NET

EWS 托管 API:通过 DateTimeReceived 上的搜索过滤器获取电子邮件

在收件箱中搜索在特定时间范围后收到的项目时(如下面的代码所述).它会搜索日期,但也会返回带有指定时间戳的电子邮件.我只想要指定时间戳之后的电子邮件. SearchFilter Greaterthanfilter = new SearchFilter.IsGreaterThan(ItemSchema.DateTimeReceived,Convert.ToDateTime(lastUploadedE ..
发布时间:2021-11-15 04:16:14 其他开发

由于 mscordbi.dll 版本错误,托管调试不再起作用

我正在尝试使用 Visual Studio 调试内存转储,作为托管,但失败并显示以下错误消息: 托管调试不适用于此小型转储. 无法找到托管小型转储调试所需的库“mscordbi.dll",版本“4.0.30319.0". 在尝试以下多个步骤之一后重新启动调试会话: 如果这台计算机当前未连接到互联网,请进行连接,以便可以从 Microsoft 下载 dll. 在调试器选项下 ..
发布时间:2021-09-18 19:59:15 C/C++开发

将流程或模块标识为托管/本机

可能的重复: 如何确定进程是否在C#? 我如何知道进程或模块是以编程方式 (.NET) 还是本机方式(在 C++ 中)? 解决方案 我手边没有 PE 规范 - 您可以从 msdn.com 下载它 - 但托管模块通常会有一个 CLR 标头并导入 mscoree.dll. ..
发布时间:2021-09-14 20:08:13 C#/.NET

从固定对象获取字节数组

可以从托管数组中获取指针 byte [] buffer = new byte[length + byteAlignment];GCHandle bufferHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned);IntPtr ptr = bufferHandle.AddrOfPinnedObject(); 有什么办法可以做相反的事情.从固定对象 ..
发布时间:2021-09-14 20:08:02 C#/.NET

C# 托管非托管代码

我试图理解托管/非托管代码,因为它与结构和类有关.我有一个具有另一个结构属性的结构,但它的指针声明如下: struct StateInfo{位板;StateInfo* 前一个;} 我正在将 C++ 项目转换为 C#.无论如何,这不起作用,因为 Bitboard 是一个类.我得到的错误是指针不能在托管类型上声明.如果我从结构中取出 Bitboard,那就没问题了.我需要它,所以我将 Bitboa ..
发布时间:2021-09-14 20:07:59 C#/.NET