问题标签 [managed]

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.

0 投票
1 回答
618 浏览

c++ - 在进程跳跃期间将非托管转换为托管

首先,我要感谢马特戴维斯的这篇文章。我知道该帖子未被选为该特定问题的答案,但该帖子对我非常有帮助。我有几个小问题需要解决(主要是调整他提供的代码中的文件路径),但我很容易使用他的 C++ 桥接方法为 C# WCF 服务创建非托管 C++ 客户端。

我现在正在探索如何改进那里提出的基本概念。以下是 Matt 帖子中 HelloServiceClientBridge.cpp 文件中的一些代码:

似乎要在这里创建很多字符串的副本。以下是我看到的可能制作字符串副本的所有潜在位置:

  • name变量中字符串的原始非托管副本
  • gcnew String(name)调用时字符串的托管副本
  • 我不确定,但是当托管字符串作为参数传递给SayHello()方法时,可能会创建另一个副本
  • 该字符串被复制到发送到 C# 服务的 WCF 消息中
  • 我不确定,但 C# 服务在收到消息时可能会创建另一个副本
  • String.Format我认为调用时会创建另一个字符串副本
  • 新的“Hello”字符串被复制到发送给客户端的 WCF 消息中
  • 我不确定,但 C# 客户端在收到消息时可能会创建另一个副本
  • 我不确定,但是当 C# 客户端将字符串返回到 C++ 桥时,可能会创建另一个副本
  • Marshal::StringToHGlobalAnsi(message)调用时会创建新字符串的非托管副本
  • 我不确定,但是当字符串转换为std::string

现在,我意识到当我们使用非托管和托管互操作和进程间通信时,一些复制是不可避免的,但我想知道是否可以避免一些这种复制。对于简单的 HelloWorld 类型示例来说,这没什么大不了的,但是如果要传递大量数据,则从非托管复制到托管然后再从一个进程复制到另一个进程的成本可能会很大。所以,我想知道是否有一种方法可以在进程间通信发生的同时进行从非托管到托管和/或反之的编组。

我考虑的一种可能性是修改代码,以便可以将字符串从非托管字符串直接复制到格式化为托管字符串的 WCF 消息中。我想既然我们无论如何都必须制作一个副本,那么如果该副本也可以提供早期副本之一的功能,那就太好了,这样我们就可以用一块石头杀死两只鸟。

我考虑的另一种可能性是通过 WCF 消息将非托管指针从 C++ 进程传递到 C# 服务,然后该消息可以由 C# 服务编组为托管字符串。当然,确定谁负责为该指针分配内存和解除分配内存可能会很麻烦,但是复制会减少,WCF 消息的大小也会显着减少。

感谢您的任何想法!

0 投票
4 回答
13855 浏览

java - JSF Managed Bean 自动创建?

是否可以自动创建 JSF 托管 bean?

例如,我有几个会话范围的 bean。有时需要在代码中(而不仅仅是在 JSF 中)访问这些实例,这是通过以下方式完成的:

但是,如果没有访问过调用“#{pages}”的页面,这将解析为 null ...当范围“开始”时,无论如何让 JSF 创建一个 bean?那么在这种情况下,理想情况下,当用户会话开始时,'pages' bean 将立即在会话中实例化?

0 投票
1 回答
1274 浏览

c# - 如何在 C# 中直接将托管流读入 uint 数组?

我在流中有一些数据,实际上是 uint 格式。System.IO.Stream 只允许我将内容读取到字节数组中,但我不想读取字节然后将它们转换为字节数组长度的 1/4 的 uint 数组。我想将它直接读入 uint 数组的内存中,这样可以节省时间。

如果它在非托管 C++ 中,那就太容易了。只需将指针发送到 uint 数组即可。但在 C# 中,它似乎并不那么简单。我正在尝试生成一个与另一个 uint 数组具有相同内存地址的字节数组,然后将字节数组作为 Stream.Read() 的参数发送,这样当 Stream.Read() 写入字节数组时,内容就是在 uint 数组中也是如此。但是我查看了 Marshall 课程,到目前为止还没有找到解决这个问题的方法。有任何想法吗?

0 投票
1 回答
3285 浏览

string - 共享内存和字符串:托管?

boost::interprocess::string我在共享内存中 有问题。

当我使用 a 时,shared_memory_object我可以操纵具有不同字段的结构,但字符串(我得到一个分段错误)。
另一方面,当我使用managed_shared_memory一切都很好。

难道我做错了什么?你知道使用 是否有性能损失managed_shared_memory

谢谢!

0 投票
1 回答
625 浏览

c# - 如何通过托管代码将非托管函数指针从dll发送到其他dll中的另一个非托管函数?

我有这个问题,我已经处理了一段时间。一开始,我有两个带有非托管代码的 dll(比如说... dll_1、dll_2)和 c# 中的托管应用程序。我应该做的是在托管代码中获取指向 dll_1 中的非托管函数的指针,将其打包到结构中,然后将此结构作为参数发送给 dll_2 中的非托管函数。以前有没有人处理过这种问题?

0 投票
2 回答
1698 浏览

c# - 将不同的语言字符串添加到单个资源文件

我有一个小应用程序,其中包含一个资源 (.resx) 文件。

该文件包含一个图标和一个字符串,供另一个应用程序使用。图标将显示在按钮上,字符串是鼠标悬停的文本。

我想要的是以某种方式添加多种语言的字符串,而不必创建额外的 .resx 文件。

有没有办法做到这一点?

我正在用 C# 编写我的应用程序,我想将它保存在 .Net 环境中,并保持资源管理。

任何帮助表示赞赏 - 在此先感谢。

0 投票
1 回答
3751 浏览

.net - 用于 Windows API 功能的 .NET 包装器

有谁知道 .NET 框架本身不提供的围绕 Windows API 功能的 .NET 托管包装器?

诸如窗口创建和显示样式、常用 UI 控件操作、键盘/鼠标输入、文件和磁盘信息、内存映射文件等领域

我一直是访问者http://www.pinvoke.net/的常客,并发现它是一个很好的资源。然而,每次都必须直接使用函数的 DllImport 并定位所需的结构和枚举,速度慢且容易出错。

(我确实意识到在可能的情况下使用 100% 托管代码执行操作几乎总是更好的方法,但是有很多事情,尤其是在 Windows 窗体中,您无法仅使用托管代码来执行此操作。)

目前专注于 Windows XP,但将来可能会转向 Windows 7。

0 投票
6 回答
1069 浏览

c# - How does c++ auto_ptr relate to managed pointers (Java, C#...)

I come from a managed world and c++ automatic memory management is quite unclear to me

If I understand correctly, I encapsulate a pointer within a stack object and when auto_ptr becomes out of scope, it automatically calls delete on the pointed object?

What kind of usage should I make of it and how should I naturally avoid inherent c++ problems?

0 投票
1 回答
420 浏览

c# - 从非托管代码中获取 COM 对象

我有一个库,它导出一个非托管 C 例程,该例程返回指向基于 COM IUnknown 的对象的指针。DLL 未注册,也不是服务器。我想使用 C# 中的 COM 类型。

我已经为 COM 类型编写了 C# 接口。调用 LoadLibrary() 和 GetProcAddress() 的 C# 等效项是什么?如何调用 GetProcAddress() 的结果,然后调用它来加载 COM 接口指针?

这是一个 C++ 片段,它说明了我所追求的:

我的直觉说“用 C++/CLI 来做”,尽管我不确定如何对任何泛型类型执行此操作,以及如何将原始 IUnknown 指针强制转换为我将使用 [Guid] 属性声明的管理器指针类型在托管接口上。

0 投票
4 回答
38051 浏览

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

在我的下一个项目中,我想为 C++ 中现有的代码实现一个 GUI。我的计划是将 C++ 部分包装在 DLL 中,并在 C# 中实现 GUI。我的问题是我不知道如何实现从非托管 DLL 到托管 C# 代码的回调。我已经在 C# 中进行了一些开发,但托管代码和非托管代码之间的接口对我来说是新的。任何人都可以给我一些提示或阅读技巧或一个简单的例子吗?不幸的是,我找不到任何有用的东西。