C # COM Cross Thread

We are developing software for managing a scientific measuring device. it provides a COM interface that defines several functions for setting measurement parameters and triggers an event when measuring data.

To test our software, I implement a simulation of this device.

The com object starts a loop that periodically triggers an event. another cycle in the client application should now configure the simulator using the specified functions.

I created a class for measuring parameters, which will be created when setting up a new measurement.

// COM-Object
public class MeasurementParams
{
    public double Param1;
    public double Param2;
}

public class COM_Sim : ICOMDevice
{
    public MeasurementParams newMeasurement;
    IClient client;

    public int NewMeasurement()
    {
        newMeasurment = new MeasurementParam();
    }

    public int SetParam1(double val)
    {
        // why is newMeasurement null when method is called from client loop
        newMeasurement.Param1 = val;
    }

    void loop()
    {
        while(true)
        {
            // fire event
            client.HandleEvent;
        }
    }
}

public class Client : IClient
{
    ICOMDevice server;

    public int HandleEvent()
    {
        // handle this event
        server.NewMeasurement();
        server.SetParam1(0.0);
    }

    void loop()
    {
        while(true)
        {
            // do some stuff...
            server.NewMeasurement();
            server.SetParam1(0.0);
        }
    }
}

. server.NewMeasurement(), . null. -, , . .

, , . , .

, COM, .

+3
2

- STA MTA? ( - STA - Com, , MTA - , )

? , , .

? STA MTA?

..NET , , , , COM . , . , ++ ( , ).

COM- :

COM
,
COM-

+1

, , COM_Sim.client . - ? , , .

: newMeasurement COM_Sim, newMeasurment (- ) . , . , , , , newMeasurement.

+1

Source: https://habr.com/ru/post/1749621/


All Articles