我正在为一个机器人控制器开发包装库,其中大部分依赖于 P/Invoke 调用。
然而,机器人的很多功能,例如归位或移动,需要相当长的时间,并且在运行时会进行线程锁定。
因此,我想知道如何以异步方式包装功能,以便调用不会阻塞我的 UI 线程。 我目前的想法是使用任务,但我不确定这是否是正确的方法。
public Task<bool> HomeAsync(Axis axis, CancellationToken token)
{
return Task.Factory.StartNew(() => Home(axis), token);
}
目前,大多数关于.NET中异步模型的MSDN文章主要依赖已经具有异步功能的库(例如File.BeginRead等)来传递信息。但我似乎找不到有关如何编写异步功能的详细信息。