Red de conocimientos turísticos - Información de alquiler - Copia de doble subproceso: lectura y escritura sincrónicas, un subproceso se usa para leer datos y un subproceso se usa para escribir datos;

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(a?=>?real.OnData?+=?a,?a?= >?real.OnData? -=?a);

//?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