Estoy trabajando en una biblioteca de envoltura para un controlador de robot, que se basa principalmente en llamadas P/Invoke.Llamadas Async P/invocación
Sin embargo, gran parte de la funcionalidad del robot, como la localización o el movimiento, lleva bastante tiempo y se bloquea durante la ejecución.
Así que me pregunto cómo puedo ajustar la funcionalidad de manera asíncrona, por lo que las llamadas no bloquean mi subproceso de interfaz de usuario. Mi idea hasta ahora es usar Tareas, pero no estoy seguro de que sea el enfoque correcto.
public Task<bool> HomeAsync(Axis axis, CancellationToken token)
{
return Task.Factory.StartNew(() => Home(axis), token);
}
La mayoría de los artículos de MSDN sobre el modelo asíncrono en .NET a partir de ahora, la mayoría está retransmitiendo en bibliotecas ya tienen funcionalidad asíncrono (como File.BeginRead y así sucesivamente). Pero parece que no puedo encontrar mucha información sobre cómo escribir la funcionalidad asincrónica en primer lugar.
¿Qué tipo de interfaz estás utilizando? ¿O es esta una biblioteca que tiene que ser compilada independientemente de una interfaz específica? –
Suponiendo que te refieres a la interfaz de la interfaz de usuario, la construcción de la aplicación en la parte superior es WPF. Pero preferiría manejarlo a nivel de biblioteca, por lo que el equipo de UI no tiene que preocuparse demasiado por el uso de subprocesos. –
La interfaz del robot normalmente no funciona de esta manera. Perderías completamente el control sobre el dispositivo, ni siquiera podrías abortar el movimiento de referencia. Un comando de inicio normalmente comienza el movimiento de inicio, luego sondear u obtener una señal cuando se completa. Compruebe lo que está disponible en la interfaz antes de comprometerse a hacerlo de esta manera. –