小编Igb*_*Igb的帖子

在C ++中触发事件并在C#中处理事件

我有一台带有一些数字I / O引脚的工业计算机。制造商提供了一些C ++库和示例来处理引脚状态更改。

我需要将此事件集成到C#应用程序中。AFAIK执行此操作最简单的方法是:

  1. 为制造商库制作一个托管的C ++ / CLI包装器,该包装器会在DIO引脚发出中断时触发事件。
  2. 引用该包装器并处理C#部分中的事件,因为它们是正常的C#事件。

我试图用一些没有运气的模拟对象来完成这项工作。从文档来看,在我的案例中,EventHandler函数应该执行大部分“肮脏的工作”。遵循旧线程中可用的信息以及MSDN文档中的EventHandler示例,我最终得到了以下测试代码:

C ++ / CLI

using namespace System;

public ref class ThresholdReachedEventArgs : public EventArgs
{
public:
    property int Threshold;
    property DateTime TimeReached;
};

public ref class CppCounter
{
private:
    int threshold;
    int total;

public:
    CppCounter() {};

    CppCounter(int passedThreshold)
    {
        threshold = passedThreshold;
    }

    void Add(int x)
    {
        total += x;
        if (total >= threshold) {
            ThresholdReachedEventArgs^ args = gcnew ThresholdReachedEventArgs();
            args->Threshold = threshold;
            args->TimeReached = DateTime::Now;
            OnThresholdReached(args);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

.net c# c++ clr c++-cli

5
推荐指数
1
解决办法
217
查看次数

标签 统计

.net ×1

c# ×1

c++ ×1

c++-cli ×1

clr ×1