代码之家  ›  专栏  ›  技术社区  ›  sproketboy

查看消息翻译消息DispatchMessage。有没有一种方法可以在.net中不使用extern以本机方式执行此操作?

  •  0
  • sproketboy  · 技术社区  · 8 年前

    我正在升级一个老项目,它使用这个mecahnism作为dicom服务。我在用铅制工具。它们是示例代码 https://www.leadtools.com/help/leadtools/v19/dh/di/dicomassociate.html

    似乎需要扩展到user32.dll,我想知道是否有新的更好的方法在.net中实现这一点?

    有什么想法吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   LEADTOOLS Support    8 年前

    如果代码在服务中运行,请避免使用application.doEvents(),因为除其他原因外,还需要添加system.windows.forms引用。

    关于建议waithandle.waitone()的注释,我认为它不起作用,因为它没有清除windows消息管道。

    由于我们的sdk的dicomnet使用windows消息,因此需要peekMessage、translateMessage和dispatchMessage这3个函数,因此您必须泵送消息队列以查找dicom消息与windows消息的混合。waithandle不会对windows消息队列执行任何操作。

    使用这三个函数与所有windows应用程序中存在的消息泵是相同的,无论这些年来向它们添加了哪些新技术层(如.net framework)。它是最低级别的版本,因此也是最轻的版本。

    如果有什么我要改变的,那就是使用getMessage而不是peakMessage作为消息泵。这可能会提高性能并降低CPU利用率。有一个演示项目使用这种方法 in this forum post . 这篇文章很老了,但是消息泵的概念还是一样的。

    注意:如果您使用的是当前版本的leadtools,则 DicomNet.Breathe method