Buenas a todos/as.
Tengo una duda que la verdad no se porque me sucede.
El caso, que tengo una aplicación realizada en C# que utiliza una .dll creada tambien en C# (las 2 realizadas por mi).
En dicha .dll tengo un evento que ejecuto cuando se ha recibido una información proveniente del hardware que maneja (unos sensores que desarrollamos en la empresa).
Bien, todo eso funciona perfectamente desde hace tiempo. Pero el problema que tengo es que cuando quiero programar ese evento desde una aplicación que usa esa .dll me da un error si ejecuto código dentro de la función que uso para manejar el evento.
Os pongo un ejemplo:
void Funcion(object sender, EventArgs e)
{
MyListAccX.Add(Sistema.NumFrames, Sistema.Sensor.digitalAcce[Sistema.NumFrames-1].X);
MyListAccY.Add(Sistema.NumFrames, Sistema.Sensor.digitalAcce[Sistema.NumFrames-1].Y);
MyListAccZ.Add(Sistema.NumFrames, Sistema.Sensor.digitalAcce[Sistema.NumFrames-1].Z);
MyListGyrX.Add(Sistema.NumFrames, Sistema.Sensor.digitalGyro[Sistema.NumFrames-1].X);
MyListGyrY.Add(Sistema.NumFrames, Sistema.Sensor.digitalGyro[Sistema.NumFrames-1].Y);
MyListGyrZ.Add(Sistema.NumFrames, Sistema.Sensor.digitalGyro[Sistema.NumFrames-1].Z);
MyListMagX.Add(Sistema.NumFrames, Sistema.Sensor.digitalMagn[Sistema.NumFrames-1].X);
MyListMagY.Add(Sistema.NumFrames, Sistema.Sensor.digitalMagn[Sistema.NumFrames-1].Y);
MyListMagZ.Add(Sistema.NumFrames, Sistema.Sensor.digitalMagn[Sistema.NumFrames-1].Z);
//textBox_NumFrames.Text = Sistema.NumFrames.ToString();
//textBox_Bytes.Text = Sistema._serialPort.BytesToRead.ToString();
//zedGraphControl_Acc.AxisChange();
//zedGraphControl_Acc.Invalidate();
//zedGraphControl_Gyr.AxisChange();
//zedGraphControl_Gyr.Invalidate();
//zedGraphControl_Mag.AxisChange();
//zedGraphControl_Mag.Invalidate();
//if (Sistema.NumFrames > MyPaneAcc.XAxis.Scale.Max - MyPaneAcc.XAxis.Scale.MajorStep)
//{
// MyPaneAcc.XAxis.Scale.Max = Sistema.NumFrames + MyPaneAcc.XAxis.Scale.MajorStep;
// MyPaneAcc.XAxis.Scale.Min = MyPaneAcc.XAxis.Scale.Max - 1000;
// MyPaneGyr.XAxis.Scale.Max = Sistema.NumFrames + MyPaneGyr.XAxis.Scale.MajorStep;
// MyPaneGyr.XAxis.Scale.Min = MyPaneGyr.XAxis.Scale.Max - 1000;
// MyPaneMag.XAxis.Scale.Max = Sistema.NumFrames + MyPaneMag.XAxis.Scale.MajorStep;
// MyPaneMag.XAxis.Scale.Min = MyPaneMag.XAxis.Scale.Max - 1000;
//}
}
En esa función, si solo realizo las acciones que estan sin comentar funciona perfectamente. Pero si quito los comentarios, funciona todo muy lento (funciona, no da error pero con mucho retraso todo).
No os cuento más ya que podria estar hablando de ello mucho tiempo y quiza sepais directamente que le pasa, pero si necesitais más info no dudeis en pregutarme.
Los tiros creo que van en que no se porque motivo, no puedo usar datos de controles dentro de esta función sin que se ralentice todo. Vi algo por ahi de derivar la clase de EventsArgs, de hecho lo hice y sigue igual.
Muchas gracias a todos por vuestro tiempo.
UN saludo.