gpt4 book ai didi

c# - 将C#代码转换为Delphi,SafeWaitHandle等同于什么?

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:42 33 4
gpt4 key购买 nike

我正在尝试将 C# 项目转换为 Delphi,C# 代码本身正在从 native dll 导入函数让我们将其命名为“dmp.dll”,我没有其 native 函数的签名,我必须查看如何在 c# 中导入这些函数并尝试在 Delphi 代码中导入它们,我确实导入了很多它们并且它们工作正常,但现在我正在努力使用这个函数 (StartLogging)。这是他们在 C# 中导入的方式:

[DllImport("dmp.dll", CharSet = CharSet.Auto, EntryPoint = "StartLogging")]
public static extern int StartLogging(String AdapterName,
PLOG_RECORD_CALLBACK LogRecordCallback,
SafeWaitHandle StopLoggingEvent);

PLOG_RECORD_CALLBACK 没有问题,但问题出在这个参数 SafeWaitHandle 上,它是存在于 Microsoft.Win32.SafeHandles 命名空间中的类。我怎样才能把它移植到德尔福?在 Delphi 中与它等效的数据类型是什么?

下面是他们如何在 C# 代码中使用它:

AutoResetEvent StopEvent = new AutoResetEvent(false);

AutoResetEvent 存在于 System.Threading 中然后他们像这样调用方法:

StartLogging(comboBox1.Text, CallbackProcedure, StopEvent.SafeWaitHandle);

然后在最后并停止他们使用的日志记录:

StopEvent.Set();

我真的很困惑,我不知道该怎么做,感谢您的帮助。谢谢

最佳答案

你或许可以使用 SyncObjs TEvent .如果您在将 ManualReset 参数设置为 False 的情况下创建它,它应该以大致相同的方式工作。只需传递 Event.Handle(它是一个 THandle,并且与 API 中的任何内容都兼容)。

我没有使用非手动重置事件的示例,但可以在已接受的答案中找到创建 TEvent 的示例 here ;要使其成为非手动重置(IOW,AutoReset),只需将第二个参数更改为False

关于c# - 将C#代码转换为Delphi,SafeWaitHandle等同于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8235510/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com