问题标签 [managed-code]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用关键字和托管\非托管代码
C# 关键字 Using 实现了 Idisposable,它提供了一种释放非托管资源的机制。
现在我正在浏览这段代码
并且不能停止想知道,为什么在此代码中使用关键字Using ,而StreamReader是托管资源,并且垃圾收集器有责任在其范围结束后释放对象内存。
所以我的问题是,
- 上面的代码是否只是一种释放资源的显式处理方式
- 据我了解,我们在 .net 框架下使用的任何方法或类都是托管代码,那么 StreamReader 也不属于托管代码。
- 我是否遗漏了托管\非托管代码上的某些内容
c# - 垃圾收集器如何解码引用类型对象没有用?
CLR 垃圾收集器会主动检查所有已创建的对象,并确定它们是否正在被使用。但是,垃圾收集器如何决定哪些对象将被杀死以及哪些对象正在使用?
我理解为对象分配空值的概念就足够了。但是,如果我只写
而不是空赋值行obj = null;
。
垃圾收集器将如何确定何时清理它?
automation - XLA vs COM vs 自动化 vs 托管代码插件
我需要您的帮助来确定可供选择的最佳策略和技术,以继续开发成功的内部 VBA 应用程序。
在我们公司(基于网络的财务信息分销商),多年来,我们开发了一个 VBA XLA 插件应用程序,仅在我们公司内部使用,它有助于将我们的财务信息数据库与 Excel 工作表链接,通过使用几个 UDF,由 ADO/SQL 和其他业务对象逻辑支持。这个应用程序对我们来说是一个可靠、快速和有用的工具,有点类似于旧的 DDE 链接,但比这更复杂和灵活。
最近,我们用基于 SOAP 的 Web 服务和 XMLHTTP MSXML 6.0 技术替换了系统的 ADO/SQL 部分,真正将我们的数据库放到了云中。目标是将应用程序转变为可以在我们公司之外使用的产品。这项工作已经完成,它的表现非常好,具有所有功能、启动时加载、用户身份验证和会话控制登录/注销、与 EXCEL 的无缝集成、用户友好的消息,所有这些都在一个 2.036Kb XLA 插件中完成文件,跨越 15.000 多行良好的 VBA 代码。但是,我们觉得它还不能像现在这样分发......
我们认为,为了成功地作为产品发布给我们的客户,这个应用程序必须转换为编译代码而不是解释的 VBA。有很多理由证明这样做是合理的,包括安全性、速度、稳健性等。但我们现在不需要深入这些细节。
我们的第一个想法是使用 VB6 和自动化设计器将我们的 VBA 代码快速转换为 VB6 自动化插件。除了 VB6 是老技术之外,自动化插件似乎不是理想的解决方案,因为我们的应用程序需要与 Excel 事件和最终用户进行一些交互,至少在“登录”和“注销”期间基于 Web 服务的数据库(以及其他一些需要通过表单进行用户交互的功能),但似乎自动化插件不适合 UDF 以外的任何东西。在这里,我们想了解其他人在自动化插件和最终用户交互方面的经验。
因此,COM 插件是下一个选择。同样,这些允许通过菜单按钮和命令进行交互,但不允许在工作表中使用 UDF。或者我们已经读过。此外,我们已经读到 COM 插件可以作为自动化插件(毕竟允许 UDF),但它们将作为 Excel 环境中的两个独立实体(一个 COM 和一个插件),一半不与对方交流。这是我们不能接受的。同样,我们想更多地了解其他人在这方面的经验。
然后是托管代码(.NET、Interop 和 VSTO)作为其他可行的选项。然而,虽然上手简单,但 Interop 是否会继续存在尚不清楚,也不清楚托管代码的最佳策略是什么。同样,我们想了解其他人在这个领域的经验。
所以,最后的问题是:考虑到我们的要求(即启动时加载、通过基于 SOAP 的 Web 服务(MSXML 6.0)访问数据、UDF 的功能、登录/注销会话控制、用户友好的错误处理等),以及我们已经拥有 15.000 行良好的 VBA 代码这一事实,这是我们继续开发此 Excel 组件以使其成为易于安全分发的产品的最佳技术吗?非常欢迎这方面的所有评论和想法。
c# - 使用 new 和 gcnew 创建公共 ref 类的对象
我在 MyRefClass.h 中声明了一个类
这三个对象的分配和管理位置/方式有什么区别?
如果这是一个太愚蠢的问题,请原谅我。我是 C# 和 C++/CLI 的新手。
c# - 将 BSTR 字符串作为托管代码和非托管代码之间的边界传递(COM 互操作)
在处理 com interop 时,我按照此链接上的教程进行操作。代码运行良好,因为我根据我的要求做了一些修改,但是在处理字符串时出现了问题。我在这里使用 BSTR 字符串作为边界。这是我从 c++ 调用的 c# 中的函数
这是我正在调用的代码的 C++ 主函数部分
我面临的问题如下:
- 尽管我在 c# 中使用了返回函数,但在从 c++ 代码传递 BSTR 字符串后,它不会在控制台上返回
- 是否可以在控制台上动态插入输入,因为我在这里使用SysAllocString("")这使得它有点硬编码。
c# - 如何设计一个包装类来使用 C++ 应用程序以使用 C# DLL?
我按照以下教程https://www.red-gate.com/simple-talk/dotnet/net-development/creating-ccli-wrapper/从 C# .NET 框架控制台创建 C++ 静态库的实例使用包装类的应用程序。在本教程中,ManagedObject.h 文件为从非托管到托管的包装类创建了一个模板。我将如何创建一个从托管到非托管的模板 - 如果这是不可能的,任何创建包装类以从 C# DLL 转到 C++ 应用程序使用的链接将不胜感激!
vb.net - 如何使用引用(指针)输出值从 vb.net 调用非托管代码的函数?
我有函数PLInsert2D 它也有这样的非托管代码描述:
我从 vb.net vs 2017 win8.1 64bit 调用这个函数:
我在这样的托管代码中使用它:
它返回&H0000000000000001这是什么?这是好事还是坏事?我可以用这个值做什么?它应该返回宏元素的引用,但我认为这不是我所期望的。任何帮助,将不胜感激。谢谢!
c# - 编译后是否生成托管代码?
注意: 在遇到一个似乎与另一个 MSDN 文档相矛盾的 MSDN 文档后,我只想澄清我目前的理解是否正确。我也已经通过以下链接 -
我有以下理解(通过此链接后我开发的):
托管代码: 用一种高级语言编写的代码(可以在 .NET 之上运行,例如 C#、F# 等)在编译时生成 IL,其执行由运行时(在本例中为 CLR、无论例如 Mono、.NET Framework、.NET Core/.NET 5+ 的实现如何,都称为托管代码。
IL: 它是托管代码编译的产物。
但是后来我遇到了这个链接,根据它说:编译到托管代码时,编译器会将您的源代码翻译成微软中间语言(MSIL)......等等。
两个文档都来自 MSDN,不确定是否是错字,因此是个问题。
那么哪一个是正确的呢?