我正在为机器人控制器开发一个包装库,该库主要依赖于 P/Invoke 调用。
然而,机器人的许多功能(例如归位或移动)需要相当长的时间,并且在运行时会进行线程锁定。
所以我想知道如何以异步方式包装功能,这样调用就不会阻塞我的 UI 线程。到目前为止,我的想法是使用任务,但我不确定这是正确的方法。
public Task<bool> HomeAsync(Axis axis, CancellationToken token)
{
return Task.Factory.StartNew(() => Home(axis), token);
}
截至目前,大多数关于 .NET 中的异步模型的 MSDN 文章大多都是基于已经具有异步功能的库(例如 File.BeginRead 等)。但我似乎找不到太多关于如何实际编写异步功能的信息。
经过一番激烈的讨论,我认为这样的事情将是黄金的中间道路。
public void HomeAsync(Axis axis, Action<bool> callback)
{
Task.Factory
.StartNew(() => Home(axis))
.ContinueWith(task => callback(task.Result));
}
我认为这是两全其美。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)