Copia de doble subproceso: lectura y escritura sincrónicas, un subproceso se usa para leer datos y un subproceso se usa para escribir datos;
¡Probemos algo nuevo! Modelo de programación asincrónica Rx (Extensiones reactivas) de Microsoft, debe usar esto para que sea conveniente
Código principal: (No hay texto, así que simulo leer la parte de datos aquí, puede completar el archivo leyendo usted mismo Parte de escritura, otras partes detalladas, consulte el proyecto adjunto) ?var?realSource?=?Observable.FromEvent
//?Una fuente observable que genera datos falsos cada dos segundos
var?dummySource?=?Observable.Interval(TimeSpan .FromSeconds(2))
.Select(_?=>?new?MyData?{?IsDummy?=?true,?Timestamp?=?DateTime.Now,?Value?=?0?} );
var?n?=?5;
//? Combine las fuentes verdaderas y falsas, tome los datos dentro de cada ventana de tiempo de 1 s y, si hay datos verdaderos, elimine los datos falsos (por lo que, en teoría, el intervalo entre datos adyacentes no excederá los 3 segundos)
//?Almacene en caché la salida de la suscripción de datos cada n segundos (escribir varios datos en la base de datos a la vez tiene un mejor rendimiento )
var ?sub?=?realSource.Merge(dummySource).Buffer(TimeSpan.FromSeconds(1)).SelectMany(buf?=>
{
if?(buf.Any( d?=>?!d.IsDummy))
buf?=?buf.Where(d?=>?!d.IsDummy).ToList();
regresar? buf;
}).Buffer(TimeSpan.FromSeconds(n)).Subscribe(buf?=>
{
//?Suscribir datos, generar (o guardar en la base de datos)
foreach?(var?d?in?buf)
{
this. textBox1.Invoke(new?Set_Text(setText ),d
}
});
real.Start();?//?Inicio recepción de datos reales