问题标签 [unmanagedresources]

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 投票
4 回答
933 浏览

c# - 需要在使用 TcpClient 的类上实现终结器?

我有一个MyClass使用(作为私有字段)TcpClient对象的类(比如说)。MyClass实现方法中的IDisposable调用。TcpClient.CloseDispose

我的问题是MyClass还应该实现一个终结器来调用Dispose(bool Disposing)以释放TcpClient’s非托管资源,以防MyClass.Dispose调用代码不调用它?

谢谢

0 投票
3 回答
480 浏览

unmanagedresources - 非托管 dll 代码

我有一个使用 C/C++ 编写的非托管 32 位库的 C#(.NET 3.5,VS2005 Professional)应用程序。我使用的 API 是这样的:

无效*初始化(int x);

语音GetData(无效*);

当我在 Windows XP 32bit 上运行它时,这有效,但在 Windows XP64bit 上它会抛出异常:

未处理的异常:System.Reflection.TargetInvocationException:调用的目标已引发异常。---> System.BadImageFormatException:尝试加载格式不正确的程序。(HRESULT 异常:0x8007000B)在 Aktuelizator.CommonLibrary.InitializeRingBuffer(Int32 dim) 在 Aktuelizator.AktuelizatorWService.AktuelizatorWS..ctor()

当从 32 位调用时,这些非托管 DLL 在 64 位 XP 下的工作取消管理 C/C++ 中的应用程序 writetn。

有人有什么主意吗?

0 投票
5 回答
415 浏览

.net - 应该使用 USING 语句的案例列表

“File 和 Font 是访问非托管资源(在本例中为文件句柄和设备上下文)的托管类型的示例。还有许多其他类型的非托管资源和封装它们的类库类型。所有此类类型都必须实现 IDisposable 接口。如一条规则,当你使用 IDisposable 对象时,你应该在 using 语句中声明和实例化它。” - MSDN

是否存在应使用 USING 语句的此类情况的列表(访问非托管资源(如 FILE 和 FONT,...)的托管类型?

0 投票
1 回答
137 浏览

unmanagedresources - Are the database-related objects such as connection object, command object, datareader, dataadapter,... unmanaged resources?

Are the database-related objects such as connection object, command object, datareader, dataadapter,... unmanaged resources?

0 投票
3 回答
2345 浏览

c# - 从 C# 用 C++ 编写的 DLL 调用自定义类型

我在我的 C# 项目中使用用 c++ 编写的 DLL。我已经能够使用以下代码调用 DLL 中的函数:

现在我需要调用一个需要自定义类型指针的函数。DLL 的文档布局函数如下:

我不知道如何使用这个自定义指针。这是在 DLL 中定义的吗?如果是这样,如何从 C# 项目中使用它?如果不需要,我是否需要在 c# 中包含头文件?在此先感谢您的帮助。

0 投票
2 回答
2743 浏览

c# - C# 获取非托管 dll 的版本

我正在从我的托管 c# 代码中调用一个非托管 dll,并想检查我是否调用了正确的版本。

我试图加载程序集的代码(然后获取资源文件然后获取版本)是: cur_version = Assembly.LoadFile("X:\Workspace\yreceipts_pos\yRprintProcessor\Debug\yRprintProcessor.dll"); 由于此错误,它失败了: The module was expected to contain an assembly manifest. (Exception from HRESULT: 0x80131018)

有谁知道如何解决这个问题或有更好的方法从托管 c# 代码中检查非托管 dll 的版本?

在此先感谢,理查德

0 投票
2 回答
3266 浏览

c# - C# 中的非托管 C 代码通过 ref 字符串数组编组!

我很难把这个编组下来。

我有如下所示的非托管代码:

仅供参考,我没有编写此非托管代码,但必须使用它。

返回: WORD 指示错误。

DevNames:指向字符数组数组的指针。基本上是一个字符串数组,将被修改并返回给我!

Max_Len:每个字符串的长度(我被告知这必须是 256)

Max_Num:数组的长度。我正在使用另一个正在运行的 Invoke 调用,它告诉我设备的数量,所以我确切地知道要发送多少个字符串。

我已经使用 P/Invoke interop signatureToolkit 来解决这个问题,但也阅读了一堆以获得更进一步的信息。我现在在这里:

我这样称呼我的代码:

我正在使用字符串生成器数组,因为我需要非托管代码来修改字符串生成器,以便它可以返回新字符串,因为字符串是不可变的。

当我运行代码时,我的数组未修改!

我不太确定发生了什么,但我认为这与 CLR 告诉非托管代码不要修改我的数组而是创建一个新的引用(指针)有关。即使是这种情况,我也不知道如何解决它。

感谢任何人可以提供的任何见解!

0 投票
2 回答
4009 浏览

c# - Marshal.FreeHGlobal 是否应该放在 finally 块中以确保资源被释放?

我有以下代码块:

是否应该将该块包装在 try 中,并将 FreeHGlobal 命令放在 finally 块中。(以防中间命令抛出异常)。

在这种情况下,finally 可以防止内存泄漏似乎是有道理的,但是从我在网上找到的示例来看,finally 没有被使用。也许无论如何这些资源都会被自动处理掉(即使它们是不受管理的)。

0 投票
1 回答
943 浏览

c# - 作为指针传递的非托管类型的 C++/CLI 数组

我的问题是从 cli/C++ 如何定义带有非托管类型元素的 cli::array 的问题?

我知道要创建一个非托管类型的托管数组,我需要提供它的指针。

现在,如果我想将此数组发送到需要const UserType*参数的本机函数,我该怎么做?

0 投票
2 回答
2125 浏览

c# - 如何释放进程的所有资源?

我正在运行一个进程,它正在创建一个文件并使用该文件。该过程结束后,我将删除该文件。

如果在两者之间出现一些异常,那么如何知道文件是否被进程释放以及如果它被进程锁定如何删除它。

谢谢你的帮助 :)