【发布时间】:2011-05-02 08:52:44
【问题描述】:
我正在为机器人控制器开发一个包装库,主要依赖于 P/Invoke 调用。
但是,机器人的许多功能,例如归位或移动,需要相当长的时间,并且在运行时会执行线程锁。
所以我想知道如何以异步方式包装功能,这样调用就不会阻塞我的 UI 线程。到目前为止,我的想法是使用 Tasks,但我不确定这是不是正确的方法。
public Task<bool> HomeAsync(Axis axis, CancellationToken token)
{
return Task.Factory.StartNew(() => Home(axis), token);
}
目前,关于 .NET 中异步模型的大多数 MSDN 文章,主要是基于已经具有异步功能的库(例如 File.BeginRead 等)。但我似乎找不到太多关于如何实际编写异步功能的信息。
【问题讨论】:
-
你用的是什么接口?或者这是一个必须独立于特定接口构建的库?
-
假设您的意思是 UI 界面,建立在它之上的应用程序是 WPF。但我更愿意在库级别处理它,因此 UI 团队不必过多担心线程。
-
机器人界面通常不会以这种方式工作。您将完全失去对设备的控制,甚至无法中止寻的移动。归位命令通常只是开始归位移动,然后您会在完成时轮询或获取信号。在您承诺这样做之前,请检查界面中可用的内容。
-
完成后我没有收到任何信号。它是 90 年代初期大学里的一件遗留设备。我对什么是必要的很有信心。
-
我也有类似的问题。你的决赛是什么。实施。
标签: c#