C api到C#GUI

我有一个字节流,我将其排序为结构。 现在我需要使用这些结构中的值更新C#GUI。 现在我用谷歌发现了关于pinvoke和dllimport的东西,但是所有东西都是从c#调用c代码,我需要做相反的事情。

c#代码具有旋转拨号/更新值的function,所以一旦我拥有了我需要的值,我想要调用那些函数,将这些值作为参数,我的c代码全部被写入并且gui全部使用拨号编码和function我用鼠标拖动,我只需将它们粘在一起。

谢谢你的帮助!

一般来说,你不能从C代码调用C#代码。 (您可以从C代码回调 C#代码,但C#端需要启动该进程并传入回调。)

“正确的方法”是C#代码调用C代码并提供回调函数(查找UnmanagedFunctionPointer属性,了解如何将托管委托转换为函数指针。)

如果这个选项不可行,你有几个选择,但没有一个像“粘合在一起”那么简单:

  • 使用混合模式C ++库来桥接C和C#代码。 这是一个混乱,IMO,我只建议它,因为它对您的C代码的更改量最小。
  • 从C#代码中公开一个COM对象,并与来自C的代码进行通信。比选项A稍微麻烦但是以将COM引入混合为代价。
  • 使用某种forms的进程间通信(TCP套接字,命名管道等),并在两个代码元素之间进行通信,就好像它们是单独的程序一样。

如何使用PInvoke从C#调用C代码,使C代码返回一些数据,然后让C#应用程序使用该数据来更新GUI? 是否有一些原因你不能让C#代码“负责”,只在需要时调用C代码,否则只是接管UI线程? 为什么您希望C代码能够更新GUI?